Javascript 使用js获取元素的总和
我有一个数组。此数组中的每个元素都是对象,也包含数组。 所以我需要得到数组中存在的每个项的总和 我尝试了下一步:Javascript 使用js获取元素的总和,javascript,arrays,sum,reduce,Javascript,Arrays,Sum,Reduce,我有一个数组。此数组中的每个元素都是对象,也包含数组。 所以我需要得到数组中存在的每个项的总和 我尝试了下一步: function getSum(total, item) { return total + item; } var sum = array.reduce((total, item) => total + item.data.reduce(getSum)); 但它返回的不是sum,而是字符串,它以对象开始。您需要为总计设置: var sum = array.reduc
function getSum(total, item) {
return total + item;
}
var sum = array.reduce((total, item) => total + item.data.reduce(getSum));
但它返回的不是sum,而是字符串,它以对象开始。您需要为总计设置:
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 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=数据[0],b=数据[1]
- 第二次调用:a=运行总数,b=数据[2]
请参阅reduce文档
第一个(外部)reduce确实需要一个初始值,因为它的回调中的项不是数字
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=数据[0],b=数据[1]
- 第二次调用:a=运行总数,b=数据[2]
请参阅reduce文档
第一个(外部)reduce确实需要一个初始值,因为它的回调中的项不是数字显示数组的值
。显示数组的值
。抱歉,我在看到您的编辑之前将其作为答案发布:p我在看到您的编辑之前将其作为答案发布:p