JavaScript reduce() 方法

回眸只為那壹抹淺笑 提交于 2020-08-10 23:43:16

定义

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

  • reduce() 对于空数组是不会执行回调函数的。

语法

[2,5,8,6].reduce(function(prev,next,item,arr){
...
},init);

prev 表示上一次调用回调时的返回值,或者初始值 init;

next 表示当前正在处理的数组元素;

index 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1;

init 表示初始值;

示例

数组求和

[1,2,3,4,5].reduce(function(prev,next){
        return prev+next;
    })//返回值15

求数组项的最大值

var arr = [3,9,4,3,6,0,9];
var max = arr.reduce(function (prev, next) {
    return Math.max(prev,next);
});

由于未传入初始值,所以开始时prev的值为数组第一项3,next的值为数组第二项9,取两值最大值后继续进入下一轮回调。

数组去重

var newArr = arr.reduce(function (prev, next) {
    prev.indexOf(next) === -1 && prev.push(next);
    return prev;
},[]);
  1. 初始化一个空数组

  2. 将需要去重处理的数组中的第1项在初始化数组中查找,如果找不到,就将该项添加到初始化数组中

  3. 将需要去重处理的数组中的第2项在初始化数组中查找,如果找不到,就将该项继续添加到初始化数组中

  4. ……

  5. 将需要去重处理的数组中的第n项在初始化数组中查找,如果找不到,就将该项继续添加到初始化数组中

  6. 将这个初始化数组返回


总结

reduce()会对遍历数组的每一项,可将前面数组项遍历产生的结果与当前遍历项进行运算。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!