1.Array原型上直接定义函数
Array.prototype.myMap = function (callback) {
// 创建一个空数组来存储映射后的值
const mappedArray = [];
// 遍历数组的每个元素
for (let i = 0; i < this.length; i++) {
// 调用回调函数,传入元素、索引和原始数组作为参数
// 将回调函数返回的值推入mappedArray数组中
mappedArray.push(callback(this[i], i, this));
}
// 返回映射后的数组
return mappedArray;
};
// 创建一个数组
const arr = [1, 2, 3];
// 使用'myMap'方法对数组进行映射
// 传入一个回调函数,该函数将每个元素乘以2
const mappedArr = arr.myMap((item, idx, ls) => item * 2);
// 打印映射后的数组
console.log(mappedArr); // 输出 [2, 4, 6]
2.通过函数方式进行封装
function myMap(arr, callback) {
// 创建一个空数组用于存储映射后的值
const mappedArray = [];
// 使用循环遍历原始数组
for (let i = 0; i < arr.length; i++) {
// 调用回调函数,并传入当前元素、索引和原始数组作为参数
// 将回调函数返回的结果存储到mappedArray中
mappedArray[i] = callback(arr[i], i, arr);
}
// 返回映射后的数组
return mappedArray;
}
// 定义一个名为arr的数组
const arr = [1, 2, 3];
// 调用myMap函数,并传入arr数组和一个回调函数
// 回调函数的功能是将传入的元素乘以2
const mappedArr = myMap(arr, (item, idx, ls) => item * 2);
// 打印映射后的数组
console.log(mappedArr); // 输出 [2, 4, 6]