一. 定义

**reduce()**方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

二. 用法

**reduce()** 方法按照原始数组元素顺序依次累加元素。
注意:

  • **reduce()** 不会对空数组进行累加。
  • **reduce()** 不会改变原始数组。

    三. 手写代码

    1. Array.prototype.newReduce = function(fn, initVal){
    2. let arr = this;
    3. let result = initVal;
    4. let i = 0;
    5. if(!initVal){
    6. result = arr[0];
    7. i++;
    8. };
    9. for(i; i<arr.length; i++){
    10. result = fn(result, arr[i]);
    11. }
    12. return result;
    13. }

    四. 测试代码

    1. const arr = [1, 2, 3];
    2. console.log(arr.reduce((a, b) => { return a + b;}, 0)); // 6
    3. console.log(arr.newReduce((a, b) => { return a + b;}, 0)); // 6