0%

自己动手实现系列 ---- Array.prototype.reduce

原版

1
Array.prototype.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])

自己动手

1
2
3
4
5
6
7
8
Array.prototype.myReduce = function(callback, initialValue) {
let accumulator = initialValue ? initialValue : this[0]; // 第一次使用判断时候有initialValue参数,如果有用他,没有用this[0],这里this指的是传入的数组,this[0]就是数组第一项
for (let i = initialValue ? 0 : 1; i < this.length; i++) { // 如果有初始值从0开始循环,不然从1开始
let _this = this; // 保留当前this指向
accumulator = callback(accumulator, this[i], i, _this); //
}
return accumulator; // 返回迭代器的终值
};

试用一下

1
2
3
4
5
6
7
let arr = [1, 2, 3, 4];
let sum = arr.myReduce((acc, val) => {
acc += val;
return acc;
}, 5);

console.log(sum); // 15
如果觉得不错请支持作者
------ 版权声明 ------

本文标题:自己动手实现系列 ---- Array.prototype.reduce

文章作者:

发布时间:2020年03月24日 - 04:40

最后更新:2020年04月02日 - 03:20

原始链接:https://blog.lifesli.com/2020/03/24/do-it-yourselfery-reduce/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。