参数的顺序如何在reduce帮助器方法中起作用?

时间:2017-09-23 13:57:34

标签: javascript ecmascript-6

// 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如何检测到初始值为零的参数以及它检测到的数组元素。 或者它是否随意选择参数值。

3 个答案:

答案 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中的其他函数一样,参数的顺序很重要(不是它们的名字)。

虽然这两个参数必须存在于您的函数中,但它可以有两个可选参数,即currentIndexarray本身。

最后,可选的initValue传递给reduce函数将用于初始化累加器。

您可以详细了解here