1. reduce遍历数组的方法,类似map,forEatch,reduce的可以设置初始值
2.reduce其中 init有值时 pre为init,item为数组中的值,index为当前索引,arr是数组本身
init没值时,pre为数组中的值,item类推,index为item值的索引,
有return时,pre为 return 出的值
var a = [4,5,6]
undefined
a.reduce((pre,item,index,arr)=>{
console.log(pre,item,index,arr)
})
// 打印结果
4 5 1 [4,5,6]
undefined 6 2 [4,5,6]
a.reduce((pre,item,index,arr)=>{
console.log(pre,item,index,arr)
},9)
//打打印结果
9 4 0 (3) [4, 5, 6]
undefined 5 1 (3) [4, 5, 6]
undefined 6 2 (3) [4, 5, 6]
reduce封装
// myReduce
Array.prototype.myReduce = function (fn,...args) {
if(!arguments.length){
throw new error;
}
let pre = args.length>0? args[0] : this[0];
let startIndex = args.length>0?0:1;
for(let i = startIndex;i<this.length; i++) {
pre = fn(pre,this[i],i,this)
}
return pre
}