1、語法
arr.reduce(callback,[initialValue])
reduce 為數(shù)組中的每一個(gè)元素依次執(zhí)行回調(diào)函數(shù),不包括數(shù)組中被刪除或從未被賦值的元素,接受四個(gè)參數(shù):初始值(或者上一次回調(diào)函數(shù)的返回值),當(dāng)前元素值,當(dāng)前索引,調(diào)用 reduce 的數(shù)組。
callback (執(zhí)行數(shù)組中每個(gè)值的函數(shù),包含四個(gè)參數(shù))
1、previousValue (上一次調(diào)用回調(diào)返回的值,或者是提供的初始值(initialValue))
2、currentValue (數(shù)組中當(dāng)前被處理的元素)
3、index (當(dāng)前元素在數(shù)組中的索引)
4、array (調(diào)用 reduce 的數(shù)組)
initialValue (作為第一次調(diào)用 callback 的第一個(gè)參數(shù)。)
2、實(shí)用小例
//數(shù)據(jù)之和
let array = [2,3,4];
let result= s.reduce((pre,cur)=>{
return pre+cur;
},1)
console.log(result);//2+3+4
// 數(shù)組去重
var arr = [1,2,3,3,4,4,2,1,5]
var newArr = arr.reduce(function (prev, cur,index,curarr) {
console.log('curarr:',curarr)//[1,2,3,3,4,4,2,1,5]
prev.indexOf(cur) === -1 && prev.push(cur);
//這里表示prev第一次去設(shè)置的init值[],當(dāng)滿足當(dāng)前的新數(shù)組沒有cur(當(dāng)前元素)時(shí)才執(zhí)行push
return prev;
},[]);
console.log(newArr);//[1,2,3,4,5]
// 計(jì)算數(shù)組最大值
var max = arr.reduce(function (prev, cur) {
return Math.max(prev,cur);
});