多维数组求和

3

如何对类似于此的多维数组进行垂直求和:

[
    [1,2,3],
    [4,5,6],
    [7,8,9],
    [2,4,6]
]

为了获得这个结果:
[14, 19, 24]

我已经为两个数组做了,但是我不知道如何将相同的解决方案应用于 n 个数组。

这是我为两个数组执行的方式

var sum = array1.map(function (num, index) {
  return num + array2[index];
});

如果我想要对数组array1和array2进行求和,该怎么做呢?那么对于一个多维的长度为n的数组,我该如何做同样的操作呢?

2个回答

7

我会使用.reduce

const input = [
    [1,2,3],
    [4,5,6],
    [7,8,9],
    [2,4,6]
];

const sumArr = input.reduce((partials, arr) => {
  arr.forEach((num, i) => {
    if (!partials[i]) partials[i] = 0;
    partials[i] += num;
  });
  return partials;
}, []);

console.log(sumArr);


4
你可以使用函数 reduce
这里假设每个嵌套的数组具有相同的长度。

var array = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9],
  [2, 4, 6]
];

var result = array.reduce((a, c) => {
  c.forEach((n, i) => (a[i] = (a[i] || 0) + n));
  return a;
}, []);

console.log(result);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接