当前位置:首页 > JavaScript

js map 实现

2026-02-01 20:35:58JavaScript

实现 JavaScript 的 map 方法

JavaScript 的 map 方法是数组原型上的一个高阶函数,用于对数组的每个元素执行指定操作并返回新数组。以下是几种实现方式:

js map 实现

原生 Array.prototype.map 的使用示例

const arr = [1, 2, 3];
const newArr = arr.map((item) => item * 2);
console.log(newArr); // [2, 4, 6]

手动实现 map 方法(Polyfill)

Array.prototype.myMap = function(callback) {
  const result = [];
  for (let i = 0; i < this.length; i++) {
    result.push(callback(this[i], i, this));
  }
  return result;
};

// 使用示例
const arr = [1, 2, 3];
const doubled = arr.myMap((num) => num * 2);
console.log(doubled); // [2, 4, 6]

使用 reduce 实现 map

Array.prototype.mapViaReduce = function(callback) {
  return this.reduce((acc, current, index, array) => {
    acc.push(callback(current, index, array));
    return acc;
  }, []);
};

// 使用示例
const squares = [1, 2, 3].mapViaReduce((x) => x * x);
console.log(squares); // [1, 4, 9]

注意事项

  • 回调函数接收三个参数:当前元素、当前索引、原数组。
  • map 不会修改原数组,而是返回新数组。
  • 稀疏数组(含 empty 项)会跳过空位,但保留空位在结果中。

性能优化建议

对于大数据量遍历,优先使用原生 map。手动实现时需注意边界条件(如 this 非数组时的处理)。

标签: jsmap
分享给朋友:

相关文章

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…

实现继承js

实现继承js

实现继承的方式 在JavaScript中,实现继承可以通过多种方式完成,每种方式都有其优缺点。以下是几种常见的实现继承的方法: 原型链继承 原型链继承是最基本的继承方式,通过将子类的原型指向父类的实…

js 实现文件上传

js 实现文件上传

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。以下是一个基础示例: <input ty…