说说reduce方法的作用?自己手动封装一个reduce,写出其核心代码?
时间: 2023-07-28 19:35:48 浏览: 95
reduce方法是数组的一个高阶函数,用于将数组中的元素按照指定规则进行合并,得到一个单一的值。reduce方法接收两个参数,第一个参数是一个回调函数,第二个参数是一个初始值。回调函数接收四个参数,分别为累计器、当前值、当前索引和数组本身。回调函数返回的值将作为下一次调用回调函数时的累计值传入。
以下是手动封装reduce方法的核心代码:
```
Array.prototype.myReduce = function(callback, initialValue) {
let accumulator = initialValue === undefined ? undefined : initialValue;
for (let i = 0; i < this.length; i++) {
if (accumulator !== undefined) {
accumulator = callback.call(undefined, accumulator, this[i], i, this);
} else {
accumulator = this[i];
}
}
return accumulator;
};
```
这里使用了原型链将myReduce方法添加到Array对象上。实现过程中,首先判断initialValue是否传入,如果传入则将其赋值给accumulator,否则将accumulator设为undefined。然后使用for循环遍历数组,如果accumulator不为undefined,则调用回调函数,将accumulator、当前值、当前索引和数组本身作为参数传入,并将回调函数的返回值赋值给accumulator;否则将accumulator设为当前值。最后返回accumulator即可。
阅读全文