Open senfish opened 3 years ago
做题之前,首先来了解reduce和map的具体参数
accumulator
累计器累计回调的返回值,是上一次调用callback
时返回的累积值。如果设置了initialValue
,第一次的值为initialValue
;如果没有设置initialValue
,则默认是arr[0]
currentValue
数组中正在处理的元素。index
[可选]
数组中正在处理的当前元素的索引。 如果提供了initialValue
,则起始索引号为0,否则从索引1起始。array
[可选]
调用reduce()
的数组[可选]
作为第一次调用 callback函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错。
currentValue
callback
数组中正在处理的当前元素。index
callback
数组中正在处理的当前元素的索引。array
[可选]
map
方法调用的数组。[可选]
执行 callback
函数时值被用作this
。
Array.prototype.myMap = function (callback, thisArg) {
let result = [];
this.reduce((acc, cur, index, array) => {
result[index] = callback.call(thisArg, cur, index, array);
}, 0)
return result;
}
let arr = [1,2,3];
let newArr = arr.myMap((item, index) => {
return item + 2;
})
console.log('newArr', newArr); // [3, 4, 5]