// this is the array
var numbers = [10,20,30];
// Now I want to get the sum of all the elements of numbers array
// this will give 60
numbers.reduce(function(sum,number){
return sum + number;
},0);
// this also gives 60
numbers.reduce(function(number,sum){
return sum + number;
},0);
我刚刚学习ES6,我试过看MDN但是找不到解释。我只是想知道javascript如何检测到初始值为零的参数以及它检测到的数组元素。 或者它是否随意选择参数值。
答案 0 :(得分:0)
根据MDN,第一个参数将始终是sum / accumulator,第二个参数将是值。
两个参数都没有对名称的继承绑定,因此您可以根据需要为sum和value命名。
在您的示例中,第一个可能正如您所期望的那样工作,其中sum为第一个参数,值为第二个参数。在你的第二个例子中,它以完全相同的方式工作,唯一的区别是你命名为' sum'作为'数字'和价值' as' sum'。
JS可能很奇怪,但在这种情况下,它并没有弄乱你的论点。你只是以不同的方式命名参数。
答案 1 :(得分:0)
来自MDN:
第一次调用回调函数,accumulator和currentValue 可以是两个值之一。如果在调用中提供了initialValue reduce,那么accumulator将等于initialValue,和 currentValue将等于数组中的第一个值。如果不 提供initialValue,然后累加器将等于第一个 数组中的值,currentValue将等于第二个。
注意:如果未提供initialValue,reduce将执行回调 函数从索引1开始,跳过第一个索引。如果 提供了initialValue,它将从索引0开始。
第一个参数," sum",是累加器。第二个参数currentValue是" number"。
答案 2 :(得分:0)
这是reduce
方法的语法。
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
其中,function用于减少数组,并将为每个数组元素调用。
此函数使用传递给它的第一个参数作为累加器来存储结果。
数组的每个元素都将作为 second 参数传递给函数。
就像JavaScript中的其他函数一样,参数的顺序很重要(不是它们的名字)。
虽然这两个参数必须存在于您的函数中,但它可以有两个可选参数,即currentIndex
和array
本身。
最后,可选的initValue
传递给reduce函数将用于初始化累加器。
您可以详细了解here。