自己动手实现系列 ---- Array.prototype.reduce Posted on 2020-03-24 Edited on 2020-04-02 In 源码原理 , 自己动手实现系列 原版1Array.prototype.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue]) 自己动手12345678Array.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; // 返回迭代器的终值}; 试用一下 1234567let arr = [1, 2, 3, 4];let sum = arr.myReduce((acc, val) => { acc += val; return acc;}, 5);console.log(sum); // 15 如果觉得不错请支持作者 Donate WeChat Pay ------ 版权声明 ------ 本文标题:自己动手实现系列 ---- 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 国际 转载请保留原文链接及作者。