reduce是一种数组运算,通常用于将数组的所有成员"累积"为一个值。
例1:
let arr = [1, 2, 3, 4, 5, 6]
let sum = (a, b) => a + b
arr.reduce(sum, 0); //21
上面代码中,reduce对数组arr的每个成员执行sum函数。sum的参数a是累积变量,参数b是当前的数组成员。每次执行时,b会加到a,最后输出a。
累积变量必须有一个初始值,上例是reduce函数的第二个参数0。如果省略该参数,那么初始值默认是数组的第一个成员。
例2:
let arr = [1, 2, 3, 4, 5, 6]
let text = (newArr, item) => {
newArr.push(item + 1)
return newArr
}
arr.reduce(text, []) //[2, 3, 4, 5, 6, 7]
上面代码中,累积变量的初始值是一个空数组,结果reduce就返回了一个新数组,等同于执行map方法,对原数组进行一次"变形"。