当前位置:首页 > JavaScript

js实现map

2026-02-01 02:31:04JavaScript

实现 JavaScript 的 map 方法

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

js实现map

使用原生 Array.prototype.map

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

手动实现 map 方法

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

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

使用 reduce 实现 map

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

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

扩展 Array.prototype

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]

注意事项

  • 回调函数接收三个参数:当前元素、索引和原数组。
  • map 方法不会改变原数组,而是返回一个新数组。
  • 避免在扩展原生原型时覆盖已有方法或影响其他代码。

标签: jsmap
分享给朋友:

相关文章

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js实现防洪

js实现防洪

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

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…