数组中的和数组(JavaScript)

Sum arrays in array (JavaScript)

本问题已经有最佳答案,请猛点这里访问。

我有一个由多个数组组成的数组:

1
var array = [[1], [2, 1, 1], [3, 4]];

现在我想得到一个数组,其中的元素是变量"array"中每个数组的总和。在这个例子中,var sum=[1,4,7]。我该怎么做?


您需要循环遍历每个单独的数组,然后对其元素求和并返回一个新的数组。

对于返回新数组,可以使用map和计算和,使用reduce

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var array = [
  [1],
  [2, 1, 1],
  [3, 4]
];

let m = array.map(function(item) {

  return item.reduce(function(acc, curr) {
    acc += curr;
    return acc;
  }, 0)
})

console.log(m)


您可以使用Array#map返回新项目。这些项目可以使用Array#reduce来汇总所有内部元素。

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

var newArray = array
  .map(arr => arr.reduce((sum, item) => sum += item, 0));

console.log(newArray);


我会这样写:

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

var m = array.reduce(
  (acc, curr) => acc.concat(curr.reduce((memo, number) => memo + number, 0)),
  []
);
console.log(m);


您需要先循环第一个数组以查找内部数组,然后逐个循环所有内部数组以获取和,并在内部数组的循环完成后继续将其推送到新数组。

1
2
3
4
5
6
7
8
9
10
var array = [[1], [2, 1, 1], [3, 4]];
var sumArray = [];
array.forEach(function(e){
    var sum = 0;
    e.forEach(function(e1){
        sum += e1;
    });
    sumArray.push(sum);
});
console.log(sumArray);