JavaScript reduce()

2020-03-03  本文已影响0人  younglaker

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

语法

arr.reduce(function(prev,cur,index,arr){
...
}, 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

上一篇 下一篇

猜你喜欢

热点阅读