【发布时间】:2019-01-22 11:01:36
【问题描述】:
我有一个由多个数组组成的数组:
var array = [[1], [2, 1, 1], [3, 4]];
现在我想得到一个数组,它的元素是变量“array”中每个数组的总和。在这个例子中,这将是 var sum = [1, 4, 7]。我该怎么做?
【问题讨论】:
标签: javascript arrays sum
我有一个由多个数组组成的数组:
var array = [[1], [2, 1, 1], [3, 4]];
现在我想得到一个数组,它的元素是变量“array”中每个数组的总和。在这个例子中,这将是 var sum = [1, 4, 7]。我该怎么做?
【问题讨论】:
标签: javascript arrays sum
您可以使用Array#map 退回新商品。可以使用Array#reduce准备项目来总结所有内部元素。
var array = [[1], [2, 1, 1], [3, 4]];
var newArray = array
.map(arr => arr.reduce((sum, item) => sum += item, 0));
console.log(newArray);
【讨论】:
您需要遍历每个单独的数组,然后将其元素相加并返回一个新数组。
要返回新数组,您可以使用 map & 计算总和使用 reduce
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)
【讨论】:
您需要循环第一个数组以找到内部数组,然后逐个循环所有内部数组以获得总和,并在内部数组的循环完成后继续将其推送到新数组。
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);
【讨论】:
我会这样写:
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);
【讨论】: