当前位置:首页 > JavaScript

js 实现 map

2026-01-31 21:15:47JavaScript

实现自定义 map 方法

在 JavaScript 中实现类似原生 Array.prototype.map 的功能,可以通过以下方式完成:

js 实现 map

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

作为 Array 原型方法实现

也可以将其添加到 Array 的原型上,使其可以像原生 map 方法一样调用:

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, 4];

// 使用自定义 map 函数
const doubled = customMap(numbers, num => num * 2);
console.log(doubled); // [2, 4, 6, 8]

// 使用原型方法
const tripled = numbers.myMap(num => num * 3);
console.log(tripled); // [3, 6, 9, 12]

实现注意事项

自定义 map 方法应包含以下特性:

  • 接收一个回调函数作为参数
  • 回调函数接收当前元素、索引和原数组三个参数
  • 返回一个新数组,不修改原数组
  • 保持原数组的稀疏性(跳过未定义的元素)

更完整的实现

Array.prototype.myMap = function(callback, thisArg) {
  if (this == null) {
    throw new TypeError('Array.prototype.myMap called on null or undefined');
  }
  if (typeof callback !== 'function') {
    throw new TypeError(callback + ' is not a function');
  }

  const result = new Array(this.length);
  for (let i = 0; i < this.length; i++) {
    if (i in this) {
      result[i] = callback.call(thisArg, this[i], i, this);
    }
  }
  return result;
};

这个实现更接近原生 map 方法的行为,包括类型检查、稀疏数组处理和 thisArg 参数支持。

标签: jsmap
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…