reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
reduce() 可以作为一个高阶函数,用于函数的 compose。
注意: reduce() 对于空数组是不会执行回调函数的。
实用案例
let arr = [1,2,11,22];
一、求数组之和
let result = arr.reduce((prev, cur) => {
return prev + cur
}, 0)
console.log(result)
由于传入了初始值0,所以开始时prev的值为0,cur的值为数组第一项3,相加之后返回值为3作为下一轮回调的prev值,然后再继续与下一个数组项相加,以此类推,直至完成所有数组项的和并返回。
二、数组去重
let result = arr.reduce(function (prev, cur) {
prev.indexOf(cur) === -1 && prev.push(cur);
return prev;
},[]);
console.log(result)
实现原理:
初始化一个空数组,查找原数组中的每一项,如果初始化数组中没有这一项,将该元素追加的当前数组中…