我有一个包含值的数组,它看起来像这样
var values = [[23,45,12,67],[26,35,65,23],[45,73,12,54],[32,45,65,86]];
我想添加values
变量中存在的所有数组,例如
sum = [126,198,154,230]
126 = 23 + 26 + 45 + 32
198 = 45 + 35 + 73 + 45
我尝试使用Array.prototype.map()
,但也许我没有得到完美的逻辑来做到这一点所需的帮助。如何添加n个数组的值。
答案 0 :(得分:4)
是的,你可以映射单个值的总和,但你也需要减少数组。
var values = [[23, 45, 12, 67], [26, 35, 65, 23], [45, 73, 12, 54], [32, 45, 65, 86]],
result = values.reduce((a, b) => a.map((v, i) => v + b[i]));
console.log(result);
答案 1 :(得分:0)
您可以将array#reduce
与array#forEach
一起使用。迭代数组,对于数组中的每个数组,在新数组中求和它的值,并根据索引将其他数组添加到结果中。
var values = [[23,45,12,67],[26,35,65,23],[45,73,12,54],[32,45,65,86]],
result = values.reduce((r,a) => {
a.forEach((v,i) => r[i] = (r[i] || 0) + v);
return r;
});
console.log(result);
答案 2 :(得分:0)
我的解决方案是:
const values = [[23,45,12,67],[26,35,65,23],[45,73,12,54],[32,45,65,86]];
const res = values.reduce((curr, next) => {
let length = curr.length;
for(let i = 0; i < length; i++) {
curr[i] += next[i]
}
return curr;
});
console.log(res);
&#13;
答案 3 :(得分:0)
您的代码有点像这样,
var sum;
var values = [[23,45,12,67],[26,35,65,23],[45,73,12,54],[32,45,65,86]];
values.forEach(myFunction);
function myFunction(item, index) {
item..forEach(ArraySum)
}
function ArraySum(item, index) {
sum=sum+item;
}
答案 4 :(得分:0)
您可以将Array.prototype.map()与Array.prototype.reduce()
结合使用代码示例:
const values = [[23, 45, 12, 67], [26, 35, 65, 23], [45, 73, 12, 54], [32, 45, 65, 86]];
const result = values.map((v, index, array) => v.reduce((a, c, i) => a + array[i][index], 0));
console.log(result);