senfish / blog

个人技术博客
4 stars 0 forks source link

7. 用reduce实现map函数 #7

Open senfish opened 3 years ago

senfish commented 3 years ago
Array.prototype.map = function(callback, thisArg) {

}
senfish commented 3 years ago

做题之前,首先来了解reduce和map的具体参数

reduce MDN地址 map MDN地址

arr.reduce(callback, initialValue)

callback(accumulator, currentValue[, index [, array]])

initialValue [可选]

作为第一次调用 callback函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错。

arr.map(callback, thisArg)

callback(currentValue[, index [, array]])

thisArg [可选]

执行 callback 函数时值被用作this

Array.prototype.myMap = function (callback, thisArg) {
  let result = [];
  this.reduce((acc, cur, index, array) => {
    result[index] = callback.call(thisArg, cur, index, array);
  }, 0)
  return result;
}

let arr = [1,2,3];
let newArr = arr.myMap((item, index) => {
  return item + 2;
})
console.log('newArr', newArr); // [3, 4, 5]