reduce方法詳解
阿新 • • 發佈:2018-11-06
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方法的陣列是不是空陣列時,還是加一個初始值比較靠譜。