js实现 map
实现 map 方法
在 JavaScript 中,map 是数组的一个高阶函数,用于对数组中的每个元素执行指定的操作,并返回一个新数组。以下是几种实现 map 的方法:
使用原生 Array.prototype.map
原生 map 方法是最直接的方式:

const arr = [1, 2, 3];
const newArr = arr.map((item) => item * 2);
console.log(newArr); // [2, 4, 6]
自定义实现 map
可以通过自定义函数模拟 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]
在 Array 原型上扩展
如果需要为所有数组实例添加自定义的 map 方法,可以扩展 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]
使用 reduce 实现 map
reduce 也可以用来实现 map 的功能:
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一致:(currentValue, index, array)。 - 避免在大型数组上频繁使用自定义的
map,原生方法的性能通常更优。 - 扩展
Array.prototype可能会与其他库冲突,需谨慎使用。






