reduce用法

reduce() 这个方法很牛逼 可以应用很多场景

简单介绍: reduce() 方法接收一个函数作为累加器, 数组中的每个值(从左至右) 开始缩减, 最终为一个值
其实 reduce 接收的就是一个 回调函数 , 去调用数组中的每一个项 , 直到数组结束

注意: 这里如果没有可选参数 initialValue 将会从 index= 1的值 开始计算 ,
就是这样排序的将数组的 索引值为 0 的数据项 ,作为计算中的 索引值为 1 ,本质没改变

数组名.reduce( callback, [initialValue] ); 下面是拆分后得
数组名.reduce ( function ( previousValue , currentValue , index , array ){
return 要什么返回什么
},initialValue(可选参数1) )

callback (执行数组中每个值得函数, 包含四个参数)
previousValue : 上一次的值 , 或者是提供的初始值(initialValue)
currentValue: 当前的值
index: 当前值的索引
array: 数组

initialValue: 可选参数, 作为第一次调用 caliback 的第一个参数

回调函数第一次执行时,previousValue 和 currentValue可能是两个不同值其中的一个,如果reduce有initialValue参数,

那么 previousValue 等于 initialValue ,并且currentValue 等于数组中的第一个值;如果reduce没有 initialValue 参数,

那么previousValue 等于数组中的第一个值,currentValue等于数组中的第二个值。-----------参考64

注意: 如果没有initialValue参数, reduce从index为1开始执行回调函数, 跳过第一个index。
如果有initialValue参数, reduce 将从index为 0 开始执行回调

如果数组是空的并且没有initialValue参数, 将会抛出TypeError错误. 如果数组只有一个元素并且没有初始值initialValue,
或者有initialValue但数组是空的, 这个唯一的值直接被返回而不会调用回调函数。

 // 简单实例 求和

    let total = [0, 1, 2, 3, 4, 100].reduce(function (a, b) {
        return a + b;-
    })
    console.log(total);

    let arr = [0, 1, 2, 3, 4];
    let ar = arr.reduce(function (a, b) {
        return a + b;
    });
    console.log(ar)  // 10

你可能感兴趣的:(reduce用法)