美文网首页
JavaScript reduce()

JavaScript reduce()

作者: younglaker | 来源:发表于2020-03-03 14:01 被阅读0次

    reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

    语法

    arr.reduce(function(prev,cur,index,arr){
    ...
    }, init);
    
    • arr 表示原数组;
    • prev 表示上一次调用回调时的返回值,或者初始值 init;
    • cur 表示当前正在处理的数组元素;
    • index 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1;
    • init 表示初始值。

    示例

    数组项求和

    var arr = [1, 2, 3, 5, 7, 8];
    
    var total = arr.reduce(function (prev, cur) {
        console.log('hi', prev, cur)
        return prev + cur;
    },0);
    
    console.log('total', total)
    

    运行结果:


    image.png
    var orders = [
      {num: 10},
      {num: 10},
      {num: 10},
      {num: 10}
    ]
    
    var total = orders.reduce(function(sum, order){
      console.log('hi', sum, order)
      return sum + order.num
    }, 0)
    
    console.log('total', total)
    

    运行结果:


    image.png

    求数组项最大值

    var arr = [10, 22, 13, 45, 7, 8];
    
    var max = arr.reduce(function (prev, cur) {
        console.log('last max', prev)
        return Math.max(prev,cur);
    });
    
    console.log('max', max)
    

    运行结果:


    image.png

    数组去重

    var arr = [10, 7, 22, 7, 13, 45, 7, 8, 7];
    
    var newArr = arr.reduce(function (prev, cur) {
        prev.indexOf(cur) === -1 && prev.push(cur);
        return prev;
    },[]);
    
    
    

    ① 初始化一个空数组
    ② 将需要去重处理的数组中的第1项在初始化数组中查找prev.indexOf(cur),如果找不到(空数组中肯定找不到)=== -1,就将该项添加到初始化数组中prev.push(cur)
    ③ 将需要去重处理的数组中的第2项在初始化数组中查找,如果找不到,就将该项继续添加到初始化数组中
    ④ ……
    ⑤ 将需要去重处理的数组中的第n项在初始化数组中查找,如果找不到,就将该项继续添加到初始化数组中
    ⑥ 将这个初始化数组返回

    参考: https://www.jianshu.com/p/541b84c9df90

    相关文章

      网友评论

          本文标题:JavaScript reduce()

          本文链接:https://www.haomeiwen.com/subject/fxuclhtx.html