原型方法 
源码:
Array.prototype.forEach 
js
Array.prototype.forEach = function(cb) {
  for (let i = 0; i < this.length; i++) {
    cb(this[i], i, this)
  }
}Array.prototype.map 
js
Array.prototype.map = function(cb) {
  let arr = []
  for (let i = 0; i < this.length; i++) {
    arr.push(cb(this[i], i, this))
  }
  return arr
}Array.prototype.filter 
js
Array.prototype.filter = function(cb) {
  let arr = []
  for (let i = 0; i < this.length; i++) {
    if (cb(this[i], i, this)) {
      arr.push(this[i])
    }
  }
  return arr
}Array.prototype.filterReject - proposal 
js
Array.prototype.filterReject = function(cb) {
  let arr = []
  for (let i = 0; i < this.length; i++) {
    if (!cb(this[i], i, this)) {
      arr.push(this[i])
    }
  }
  return arr
}Array.prototype.some 
js
// method1
Array.prototype.some = function(cb) {
  for (let i = 0; i < this.length; i++) {
    if (cb(this[i], i, this)) {
      return true
    }
  }
  return false
}
// method2
Array.prototype.some = function(cb) {
  let arr = []
  for (let i = 0; i < this.length; i++) {
    arr.push(cb(this[i], i, this))
  }
  return arr.indexOf(true) > -1
}Array.prototype.every 
js
Array.prototype.every = function(cb) {
  for (let i = 0; i < this.length; i++) {
    if (!cb(this[i], i, this)) {
      return false
    }
  }
  return true
}Array.prototype.find 
js
Array.prototype.find = function(cb) {
  for (let i = 0; i < this.length; i++) {
    if (cb(this[i], i, this)) {
      return this[i]
    }
  }
  return undefined
}Array.prototype.findIndex 
js
Array.prototype.findIndex = function(cb) {
  for (let i = 0; i < this.length; i++) {
    if (cb(this[i], i, this)) {
      return i
    }
  }
  return -1
}Array.prototype.reduce 
js
Array.prototype.reduce = function(cb, initialValue) {
  if (!this.length || !Array.isArray(this) || typeof cb !== 'function')
      return []
  const hasInitialValue = initialValue !== undefined
  let accumulator = hasInitialValue ? initialValue : this[0]
  let startIndex = hasInitialValue ? 0 : 1
  for (let i = startIndex; i < this.length; i++) {
    accumulator = cb(accumulator, this[i], i, this)
  }
  return accumulator
}Array.prototype.reduceRight 
js
Array.prototype.reduceRight = function(cb, initialValue) {
  if (!this.length || !Array.isArray(this) || typeof cb !== 'function')
      return []
  const hasInitialValue = initialValue !== undefined
  let accumulator = hasInitialValue ? initialValue : this[this.length - 1]
  let startIndex = hasInitialValue ? 0 : this.length - 1
  for (let i = this.length - 1; i >= startIndex; i--) {
    accumulator = cb(accumulator, this[i], i, this)
  }
  return accumulator
}