当前位置:首页 > JavaScript

js map方法 实现

2026-02-02 19:53:04JavaScript

js map方法 实现

map方法的基本用法

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

js map方法 实现

const newArray = arr.map(callback(currentValue[, index[, array]])[, thisArg])
  • callback:对每个元素执行的函数,接受三个参数:
    • currentValue:当前处理的元素
    • index(可选):当前元素的索引
    • array(可选):原数组
  • thisArg(可选):执行callback时用作this的值

实现自定义map方法

以下是手动实现map方法的Polyfill代码:

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 originalArray = Object(this);
  const len = originalArray.length >>> 0;
  const newArray = new Array(len);

  for (let i = 0; i < len; i++) {
    if (i in originalArray) {
      newArray[i] = callback.call(thisArg, originalArray[i], i, originalArray);
    }
  }

  return newArray;
};

使用示例

const numbers = [1, 2, 3, 4];

// 原生map方法
const squared = numbers.map(x => x * x);
console.log(squared); // [1, 4, 9, 16]

// 自定义myMap方法
const cubed = numbers.myMap(x => x * x * x);
console.log(cubed); // [1, 8, 27, 64]

实现要点说明

  1. 类型检查:确保调用对象不为null/undefined,且callback是函数
  2. 长度处理:使用无符号右移操作符>>> 0确保长度为非负整数
  3. 稀疏数组处理:通过in操作符检查索引是否存在
  4. 上下文绑定:使用call方法确保正确的this绑定

性能考虑

原生map方法通常经过浏览器优化,性能优于手动实现。自定义实现主要用于理解原理或在不支持ES5的环境中使用。实际项目中建议优先使用原生方法。

标签: 方法js
分享给朋友:

相关文章

js实现抽奖

js实现抽奖

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

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现图

js实现图

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

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…

js实现文件夹

js实现文件夹

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