手写map方法

450 阅读1分钟

数组map方法,其中需要传入两个参数,第一个是一个回调函数,第二个是一个回调函数的this指向的值。

在手写map方法时,我们需要注意如下问题:

  1. 回调函数必须是一个函数
  2. 调用该方法的对象必须是数组。
  3. 如果数组的大小为0,则直接返回空数组。
Array.prototype.myMap = function (callback, thisArg) {
  let length = this.length
  let res = []
  if (!Array.isArray(this)) throw new TypeError('this is not an array')
  if (typeof callback !== 'function') throw new TypeError(callback + 'is not a function')
  if (length === 0) {
    return res
  }
  for (let i = 0; i < length; i++) {
    res[i] = callback.call(thisArg, this[i], i, this)
  }
  return res
}