1. 程式人生 > >reduce在陣列求和中第二個引數initialValue討論

reduce在陣列求和中第二個引數initialValue討論

回撥函式第一次執行時,accumulator 和currentValue的取值有兩種情況:呼叫reduce時提供initialValueaccumulator取值為initialValuecurrentValue取陣列中的第一個值;沒有提供 initialValueaccumulator取陣列中的第一個值,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