SOURCE

// reduce 遍历一个数组,当前项目的返回值做为下一项遍历到的pre的输入,最后返回pre
//调用方式 其中value开始是可选的,如果没传则默认pre为第一项,value为第二项
// 累加
const arr = [1,2,3]
let res = arr.reduce((pre, value, index, arr)=>{
    // 这是用户可以操作的 返回值
    return pre+value
},1)
console.log(res)



Array.prototype.myreduce = function(callback,val){
    let arr = this
    
    if(val!==undefined){
        pre = callback(val,arr[0],0,arr)
    }else{
        pre = arr[0]
    }
    
    for(let i =1; i<arr.length; i++){
        pre = callback(pre,arr[i],i,arr)
    }

    return pre
}

const testRes = arr.myreduce(((pre, value, index, arr)=>{
    return pre+value
}),1)
console.log(testRes)
console 命令行工具 X clear

                    
>
console