当前位置:首页 > JavaScript

js实现map

2026-04-05 18:54:01JavaScript

实现 JavaScript 的 map 方法

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

使用 Array.prototype 扩展

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

js实现map

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 功能:

js实现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 功能:

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实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…

js实现下拉刷新

js实现下拉刷新

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