解析 Array.prototype.reduce()

162 阅读1分钟

Arr.reduce(callback, initVal);

  • callback;
  • initVal 非必传

其中 callback 内有四个参数,分别作用如下;

  • 要进行累计运算;
  • 当前或者下一个值; 当initVal传入的话,callback第一个参数默认值为initVal,第二个参数默认为数组下标为0的值,如果没传入,则callback中第一个参数默认为数组下标为0的值,第二个参数默认为数组下标为1的值
  • 当前数组下标,与第三个参数相对应;
  • 当前数组;

实例


    /*
        sum: 累计计算
        val: 当前或者下一个值
        idx: 当前下标
        soures: 原数组
    */
    var z  = [1,2,3,4,5,6,7].reduce((sum, val, idx, soures) => sum+val, 4);
    console.log(z); // 32
    
    var z  = [1,2,3,4,5,6,7].reduce((sum, val, idx, soures) => sum+val, 0);
    console.log(z); // 28
    
    var z  = [1,2,3,4,5,6,7].reduce((sum, val, idx, soures) => sum+val);
    console.log(z); // 28
    
    var z  = [1,2,3,4,5,6,7].reduce((sum, val, idx, soures) => sum*val);
    console.log(z); // 5040