1. 程式人生 > >reduce方法詳解

reduce方法詳解

reduce方法詳解

reduce(callback,init);
這個init為初始項,如果沒有預設為陣列的第一項,這個項是可選的

reduce方法會遍歷陣列,使用回撥函式遍歷處理陣列中的每一項,回撥函式每次會返回一個處理後的值,作為下一次回撥的第一個引數。

function(prev,cur,index,arr);

prev:上一次回撥的處理結果

cur:本次遍歷的陣列項

index:當前遍歷的索引

arr:對應的是陣列本身

實際應用:

1.進行陣列項求和

    var arr = [1,2,3,4,5];      
    var
res = arr.reduce((prev,val)=>(prev + val)); console.log("arr:",arr); console.log("res:",res); //輸出 //arr: (5) [1, 2, 3, 4, 5] //res: 15

2.新增初始值求和

var arr = [1,2,3,4,5];      
var res = 
arr.reduce(
(prev,val,index)=>{ 
console.log(index); 
return (prev + val);
},100);
console.log("arr:"
,arr); console.log("res:",res); //輸出 //0 //1 //2 //3 //4 //arr: (5) [1, 2, 3, 4, 5] //res: 115

注意:空陣列使用reduce方法時,必須傳入initval值,否則會報錯

[].reduce((prev,cur)=>prev+cur);
//輸出:
//VM287:1 Uncaught TypeError: Reduce of empty array with no initial 
value  at Array.reduce (<anonymous>)

加一個初始值就好了

[].reduce((prev,cur)=>prev+cur,0
)
; //輸出:0

所以如果你不確定呼叫reduce方法的陣列是不是空陣列時,還是加一個初始值比較靠譜。