当前位置:首页 > JavaScript

js实现map

2026-04-05 18:54:01JavaScript

实现 JavaScript 的 map 方法

JavaScript 的 map 方法用于遍历数组,对每个元素执行回调函数并返回新数组。以下是自定义实现 map 的几种方式:

使用 Array.prototype 扩展

为数组原型添加自定义 myMap 方法:

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 numbers = [1, 2, 3];
const doubled = numbers.myMap(num => num * 2);
console.log(doubled); // [2, 4, 6]

独立函数实现

创建独立函数模拟 map 功能:

function map(array, callback) {
  const result = [];
  for (let i = 0; i < array.length; i++) {
    result.push(callback(array[i], i, array));
  }
  return result;
}

// 使用示例
const words = ['hello', 'world'];
const lengths = map(words, word => word.length);
console.log(lengths); // [5, 5]

支持 thisArg 的实现

添加对 thisArg 参数的支持,模拟原生 map 的完整功能:

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

// 使用示例
const obj = { multiplier: 3 };
const nums = [1, 2, 3];
const tripled = nums.myMap(function(num) {
  return num * this.multiplier;
}, obj);
console.log(tripled); // [3, 6, 9]

使用 reduce 实现

通过 reduce 方法实现 map 功能:

js实现map

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

// 使用示例
const chars = ['a', 'b', 'c'];
const upperChars = chars.myMap(char => char.toUpperCase());
console.log(upperChars); // ['A', 'B', 'C']

这些实现方式展示了 map 方法的核心逻辑,可以根据具体需求选择适合的方案。原生 map 方法还包含更多边界条件处理,上述示例聚焦于核心功能的演示。

标签: jsmap
分享给朋友:

相关文章

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js实现下拉刷新

js实现下拉刷新

监听触摸事件 通过监听 touchstart、touchmove 和 touchend 事件来检测用户下拉手势。记录触摸起始位置和移动距离。 let startY = 0; let curr…

js实现轮播代码

js实现轮播代码

基础轮播实现 使用HTML、CSS和JavaScript创建一个简单的轮播效果。HTML部分定义轮播容器和图片元素。 <div class="carousel"> <div c…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…

js实现文件夹

js实现文件夹

使用JavaScript创建文件夹 在浏览器端的JavaScript中无法直接操作文件系统创建文件夹,这是出于安全考虑。但在Node.js环境中可以通过文件系统模块(fs)实现。 Node.js中使…

js 多选 实现

js 多选 实现

实现多选的 JavaScript 方法 使用复选框(Checkbox)实现多选 通过 HTML 的 checkbox 元素配合 JavaScript 实现多选功能。用户可以选择多个选项,提交时获取所有…