2022-09-18笔试题00
请注意,本文编写于 584 天前,最后修改于 584 天前,其中某些信息可能已经过时。

面试高频手撕代码题

用 reduce 实现 map

reduce 是一个累加方法,是对数组累积执行回调函数,返回最终计算结果。

array.reduce(function (total, currentValue, currentIndex, arr) {}, initialValue);

//total 必需。初始值, 或者计算结束后的返回值。
//currentValue  必需。当前元素
//currentIndex  可选。当前元素的索引
//arr   可选。当前元素所属的数组对象。
//initialValue可选。传递给函数的初始值

map 是遍历数组的每一项,并执行回调函数的操作,返回一个对每一项进行操作后的新数组。

array.map(function(currentValue,index,arr), thisArg)//currentValue  必须。当前元素的值
//index 可选。当前元素的索引值
//arr   可选。当前元素属于的数组对象
//thisArg 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisArg,或者传入 null、undefined,那么回调函数的 this 为全局对象。

用 reduce 实现 map 方法

Array.prototype.myMap = function (fn, thisArg) {
  var res = [];
  thisArg = thisArg || [];
  this.reduce(function (pre, cur, index, arr) {
    res.push(fn.call(thisArg, cur, index, arr));
  }, []);
  return res;
};
var arr = [2, 3, 1, 5];
arr.myMap(function (item, index, arr) {
  console.log(item, index, arr);
});
let res = arr.myMap(v => v * 2);
console.log(res); // [4,6,2,10]

本文作者:前端小毛

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!