1、reduce函数介绍
定义:reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
array.reduce(function(prev, cur, index, arr), initVal)
参数介绍:
callback | 必要参数,回调函数
| ||||||||
initval | 可选参数:初始值,如果有就采用本值作为初始值,没有就采用数组第一个值 |
//具体用法
let arr = [1,2,3,4]
let sum = arr.reduce((pre,cur,index)=>{
return pre+cur
},0)
console.log(sum)//10
2、手写实现
Array.prototype.myReduce = function(callback,initVal){
const n = this
if(!callback){
console.error('未设置执行的回调函数')
return
}
if(n.length<1){
console.error('错误的数组')
return
}
let len = n.length
let prev = initVal,res
if(prev===undefined){
prev = n[0]
len = len-1
}
for(let i = 0;i<len;i++){
if(initVal!==undefined){
prev = callback(prev,n[i],i,this)
}else{
prev = callback(prev,n[i+1],i+1,this)
}
}
return prev
}