使用js获取元素的总和

Get Sum of elements using js

我有数组。这个数组中的每个元素都是对象,也包含数组。 所以我需要获取数组中存在于数组中的每个项目的总和。

接下来我试过了:

function getSum(total, item) {
    return total + item;
}

var sum = array.reduce((total, item) => total + item.data.reduce(getSum));

但它returns不是总和,而是以Object...

开头的字符串

您需要为 total 设置 an initial value:

var sum = array.reduce((total, item) => total + item.data.reduce(getSum, 0), 0);

如果您不这样做,它将使用数组的第一项进行初始化,在您的例子中是一个对象。这就是为什么您会收到意外字符串的原因。

您甚至可以使用 total 作为第二次缩减的初始值来缩短您的代码:

var sum = array.reduce((total, item) => item.data.reduce(getSum, total), 0);

简直了

var array = [
    {data: [1,2,3]},
    {data: [4,5,6]}
];
array.reduce((total, item) => total + item.data.reduce((a, b) => a + b), 0);
// result = 21

第二个(内部)reduce 没有初始值,所以

  • 第一次调用:a = data[0], b = data[1]
  • 第二次调用:a = 运行 总数,b = 数据[2]

查看减少文档

第一个(外部)reduce 确实需要一个初始值,因为它的回调中的项目不是数字