【发布时间】:2016-03-01 10:52:59
【问题描述】:
我有一个数组,其中包含许多具有匹配键的对象:
[{a: 2, b: 5, c: 6}, {a:3, b: 4, d:1},{a: 1, d: 2}]
我想循环遍历数组,如果键匹配,我想添加每个的结果并返回一个对象和每个键的总和。
即
{a: 6, b: 9, c: 6, d: 3}
我目前拥有的代码是
function combine() {
var answer = [];
for(var i in arguments){
answer.push(arguments[i])
}
answer.reduce(function(o) {
for (var p in o)
answer[p] = (p in answer ? answer[p] : 0) + o[p];
return answer;
}, {});
}
如果我要使用下划线库,我可以找到答案here,但是我希望不使用库来做到这一点。我想我很难理解 reduce 方法的工作原理 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
任何有关如何解决此问题的帮助将不胜感激。另外,我觉得这个答案应该在 SO 上的某个地方,而不必使用库。
提前致谢。
【问题讨论】:
-
还要提到你得到的输出。
标签: javascript arrays object