Javascript for/in 循环 - 连接来自两个不同对象的项目?

标签 javascript for-loop foreach for-in-loop

我有下面这些数据集,我想连接每组中的数据:

    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' ] }

有什么想法吗?

编辑

对于数据来说,concatpush 更快吗?

最佳答案

您必须连接数组,而不仅仅是重新分配值。

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) {

    // Check if key already exists.
    if( data[key] === undefined )
      data[key] = [];

    // Add current timestamps.
    data[key] = data[key].concat(dataset.particles[key]);
  }
});
console.log(data);

关于Javascript for/in 循环 - 连接来自两个不同对象的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43022252/

相关文章:

javascript - 如何在 Typescript 中使用反射获取所有属性(包括未定义的)?

javascript - 在 opentok 样本上找不到模块 'ejs'

JavaScript - 延迟一组 setTimeout 事件

r - 使用for循环返回变量名-R中的变量均值

c - 如何以编程方式检查输入是否包含点?

c++ - 我们可以使用for-each循环遍历传递给函数的数组吗?

Javascript 选择具有包含单词的属性的 anchor

c - 如何输入一个数字并使用 for 循环按顺序计数 10 个以上的数字

jsp - JSTL 继续,在 foreach 内中断

javascript - 当改变复制变量的值时,它也在改变 angularjs 中的主变量值