一、map 方法
手写 map 方法:
function map(arr, callback) {
if (!Array.isArray(arr) || !arr.length || typeof callback !== 'function') { // arr不是数组,长度非0,callback是 function
return [];
} else {
let result = [];
for (let index = 0; index < arr.length; index ++) {
const item = arr[i], self = arr;
result.push(callback(item, index, self));
}
return result;
}
}
使用 map 方法:
const arr = [10, 20, 30];
const res = map(arr, (item) => item * 2);
console.log(res); // [20, 40, 60]
二、reduce 方法
手写 reduce 方法:
function reduce(arr, callback, initialValue) {
if (!Array.isArray(arr) || !arr.length || typeof callback !== 'function') {
return [];
} else {
// 判断是否有初始值
let hasInitialValue = initialValue !== undefined;
let pre= hasInitialValue ? initialValue : arr[0];
for (let index = hasInitialValue ? 0 : 1; index < arr.length; index++) {
const item = arr[index], self = arr;
pre = callback(pre, item, index, self);
}
const res = pre;
return res;
}
}
使用 reduce 方法:
const arr = [1, 2, 3, 4, 5];
const res = reduce(arr, (pre, item) => pre + item, 10);
console.log(res); // 25