当前位置:首页 > JavaScript

js 实现map

2026-02-01 14:17:43JavaScript

实现 JavaScript 的 map 方法

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

使用原生 Array.prototype.map

原生 map 方法可以直接调用:

js 实现map

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

手动实现 map 方法

可以手动实现一个类似 map 功能的函数:

js 实现map

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

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

在数组原型上扩展 map 方法

可以通过扩展 Array.prototype 来实现自定义的 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 arr = [1, 2, 3];
const newArr = arr.myMap(item => item * 2);
console.log(newArr); // [2, 4, 6]

使用 reduce 实现 map

map 方法也可以通过 reduce 实现:

function mapWithReduce(arr, callback) {
    return arr.reduce((acc, current, index, array) => {
        acc.push(callback(current, index, array));
        return acc;
    }, []);
}

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

注意事项

  • map 方法不会修改原数组,而是返回一个新数组。
  • 回调函数可以接收三个参数:当前元素、当前索引和原数组。
  • 如果需要在稀疏数组上使用 map,空元素会被跳过。

以上方法可以根据具体需求选择使用。

标签: jsmap
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callback) {…

js实现防洪

js实现防洪

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

js实现图

js实现图

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

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现下拉刷新

js实现下拉刷新

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

js实现左右滑动

js实现左右滑动

实现左右滑动的 JavaScript 方法 监听触摸事件 通过 touchstart、touchmove 和 touchend 事件来检测用户的手势操作。记录触摸的起始位置和移动距离,判断滑动方向。…