天天看點

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