【发布时间】:2017-08-18 17:38:13
【问题描述】:
我在下面有这些数据集,我想合并每个集合中的数据:
var data = {};
var datasets = [
{"_id":"58d6c806d7c80d5d44a35204","particles":{"timestamp":[1490470918708,1490470962915,1490470967186],"Particles":["108","108","109"]}},
{"_id":"58d6caf62552b75f26f56f91","particles":{"timestamp":[1490471670888,1490473309103],"Particles":["109","100"]}}
];
datasets.forEach(function(dataset, index) {
for (var key in dataset.particles) {
data[key] = dataset.particles[key];
}
});
console.log(data);
结果:
{ timestamp: [ 1490471670888, 1490473309103 ],
Particles: [ '109', '100' ] }
他们没有加入。我追求的结果:
{ timestamp: [ 1490470918708,1490470962915,1490470967186, 1490471670888, 1490473309103 ],
Particles: [ '108','108','109', '109', '100' ] }
有什么想法吗?
编辑
concat 或 push 在处理非常大型数据时更快吗?
【问题讨论】:
-
因为我看到了很多好的答案,所以我不会写我的。只是一个评论,我注意到很多人都在使用
concat。这每次都会创建一个新数组,而不仅仅是在现有数组中添加新项目。我建议改用push。 -
@Luka 的推送速度比 concat 快吗?
-
一般
push使用Array.prototype.push.apply调用会更快。但要小心,因为这种方式有限制:你不能以这种方式追加大量的项目。 -
@Luka 我需要推送大量数据。所以我认为 concat 更好?
-
然后使用 concat 以确保安全。使用
push可能会破坏程序。
标签: javascript for-loop foreach for-in-loop