Javascript:按键求和多个数组的最有效方法

标签 javascript arrays loops for-loop

我有一个从 Web 服务返回的 JSON 对象,它是一个对象数组。我需要将“数据”数组添加在一起以形成求和数组。 JSON 响应如下所示:

[  
  {  
    "data":[  
       0,3,8,2,5
    ],
    "someKey":"someValue"
  },
  {  
    "data":[  
       3,13,1,0,5
    ],
    "someKey":"someOtherValue"
  }
]

数组中可能有 N 个对象。上述示例所需的输出为:

[3, 16, 9, 2, 10]

我打算创建一个空数组变量(var arr),然后循环遍历对象,对于每个对象,循环遍历“data”键,并为每个键将 arr 中相应的键增加值。

是否有更有效的方法使用某种合并函数来执行此操作?

最佳答案

这个怎么样,我相信它应该适用于所有情况。

var data = [{
  "data": [
    0, 3, 8, 2, 5
  ],
  "someKey": "someValue"
}, {
  "data": [
    3, 13, 1, 0, 5
  ],
  "someKey": "someOtherValue"
}];

var datas = data.reduce(function(a, b) {
  b.data.forEach(function(x, i) {
    a[i] = a[i] || 0;
    a[i] += x;
  });
  return a;
}, []);

console.log(datas);

关于Javascript:按键求和多个数组的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33287889/

相关文章:

ios - 如何检查数组中的所有字段是否包含数据

Javascript if/else 没有按预期工作

javascript - window.onload 适用于 aspx 页面,但不适用于常规 html

javascript - "' window.webkitStorageInfo ' is deprecated"迭代窗口对象时发出警告

javascript - 在一个术语上拆分字符串,然后在另一个术语上拆分

javascript - 将对象嵌套在数组中的对象中时出错

arrays - 如何分配一个变量来引用一个数组?

perl - 如何对数组进行排序,以便某些文件扩展名排序到顶部?

jquery - 使用 jQuery/For 循环为子选择修改表中的值时的奇怪行为

c++ - 将一个循环分解为两个循环的性能