定义

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

reduce() 可以作为一个高阶函数,用于函数的 compose。

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

语法
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

通常情况下,第一个参数 使用  prev (如下)

arr.reduce(function(prev,cur,index,arr){
...
}, init);

arr 表示原数组;

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

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

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

init 表示初始值。

1.数组求和

var sum = arr.reduce(function(prev,cur){
return prev+cur;
});

2.求数组项最大值

var max = arr.reduce(function (prev, cur) {
return Math.max(prev,cur);
});

3.扁平一个二维数组

var arr = [[1, 2, 8], [3, 4, 9], [5, 6, 10]];
var res = arr.reduce((prev, cur) => prev.concat(cur), []);
console.log(res)