数组reduce、map、forEach、some、filter、every、find实现

37 阅读1分钟

Reduce

Array.prototype.reduce = function(func,prev){
  for(let i = 0 ; i < this.length;i++){
    if(prev === undefined){
      prev = fn(this[i],this[i+1],i,this)
    }else{
      prev = fn(prev,this[i],i,this)
    }
    return prev
  }
}

ForEach

Array.prototype.forEach = function(func){
  for(let i = 0 ; i<this.length;i++){
    func(this[i],i,this)
  }
}

Map

Array.prototype.map = function(func){
  let arr = []
  for(let i = 0 ; i < this.length;i++){
    arr.push(func(this[i],i,this))
  }
  return arr
}

Some

Array.prototype.some = function(func){
  for(let i = 0 ; i < this.length;i++){
    if(func(this[i])){
      return true
    }
  }
  return false
}

Filter

Array.prototype.filter = function(func){
  var arr = []
  for(let i = 0 ; i <this.length;i++){
    if(func(this[i])){
      arr.push(this[i])
    }
  }
  return arr
}

Every

Array.prototype.every = function(func){
  for(let i = 0 ; i <this.length;i++){
    if(!func(this[i])){
      return false
    }
  }
  return true
}

Find

Array.prototype.find = function(func){
  for(let i = 0 ; i <this.length;i++){
    if(func(this[i])) {
      return this[i]
    }
  }
}