我有一个具有以下格式的数组
[
[{year:2015, value:23000, value1:1000},{year:2016,value:1000, value1:2000},{year:2017,value:400, value1:3000}],
[{year:2015, value:10000, value1:1000},{year:2016,value:2000, value1:3000},{year:2017,value:500, value1:2000}],
]
我想将它们加在一起,在这个例子中,我想要
[{year:2015,value:33000, value1:2000},{year:2016,value:3000, value1:5000},{year:2017,value:900, value1:5000}]
如果数组中只有两个数组,但较大的数组中可能有更多数组。我怎样才能做到这一点?目前,我无法找出一个好的方法。谢谢
最佳答案
Ecmascript5解决方案:
var arr = [
[{year:2015, value:23000, value1:1000},{year:2016,value:1000, value1:2000},{year:2017,value:400, value1:3000}],
[{year:2015, value:10000, value1:1000},{year:2016,value:2000, value1:3000},{year:2017,value:500, value1:2000}]
],
// summing up values for each `year`
years = arr.reduce(function (r, a) {
a.forEach(function (o) {
y = o.year;
if (Array.isArray(r[y])) {
r[y][0] += o.value;
r[y][1] += o.value1;
} else {
r[y] = [o.value, o.value1];
}
});
return r;
}, {}),
// constructing the resulting array containing objects with `year` totals
result = Object.keys(years).map(function (y) {
return {year: y, value: years[y][0], value1: years[y][1]};
});
console.log(result);
关于javascript 将对象数组的数组求和在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43696393/