使用js获取元素的总和

时间:2016-09-01 10:08:47

标签: javascript arrays sum reduce

我有阵列。此数组中的每个元素都是object,它也包含数组。 所以我需要得到数组中存在的每个项目的总和。

我接下来试过了:

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

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

但它返回的不是sum,而是字符串,以Object ...

开头

2 个答案:

答案 0 :(得分:5)

您需要为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);

答案 1 :(得分: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]

请参阅减少文档

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

相关问题