reduce在陣列求和中第二個引數initialValue討論
回撥函式第一次執行時,accumulator
和currentValue
的取值有兩種情況:呼叫reduce
時提供initialValue
,accumulator
取值為initialValue
,currentValue
取陣列中的第一個值;沒有提供 initialValue
,accumulator
取陣列中的第一個值,currentValue
取陣列中的第二個值。
注意:如果沒有提供initialValue
,reduce
會從索引1的地方開始執行 callback 方法,跳過第一個索引。如果提供initialValue
,從索引0開始。
如果陣列為空且沒有提供initialValue
,會丟擲TypeError
initialValue
,
或者有提供initialValue
但是陣列為空,那麼此唯一值將被返回並且callback
不會被執行。
[1, 2, 3,4].reduce(function(sum, value,index) {
console.log("sum::"+sum);
console.log("value::"+value);
console.log(1000,index);
return sum + value;
});
sum::1
value::2
1000 1
sum::3
value::3
1000 2
sum::6
value::4
1000 3
10
[1, 2, 3,4].reduce(function(sum, value,index) {
console.log("sum::"+sum);
console.log("value::"+value);
console.log(1000,index);
return sum + value;
},0);
sum::0
value::1
1000 0
sum::1
value::2
1000 1
sum::3
value::3
1000 2
sum::6
value::4
1000 3
10
[1, 2, 3,4].reduce(function(sum, value,index) {
console.log("sum::"+sum);
console.log("value::"+value);
console.log(1000,index);
return sum + value;
},10);
sum::10
value::1
1000 0
sum::11
value::2
1000 1
sum::13
value::3
1000 2
sum::16
value::4
1000 3
20