Array.prototype.reduce()

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

你可能感兴趣的:(Array.prototype.reduce())