Array.prototype.myReduce = function (callback, initValue) {
if (Object.prototype.toString.call(callback) != "[object Function]") {
throw new TypeError(callback + "is not a function!")
}
if (this == undefined) {
throw new TypeError("this is null or not undefined!!")
}
let curentValue
let sum = 0
let index
if(initValue) {
sum = initValue
index = 0
} else {
sum = this[0]
index = 1
}
for(;index < this.length;index++) {
curentValue = this[index]
sum = callback(sum,curentValue,index,this)
}
return sum
}
let arr = [1,3,4,5,45,6,33]
let sum = arr.myReduce((sum,item) => {
return sum + item
},0)
console.log(sum) //97
网友评论