MDN定义
reduce()
方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
语法:arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
参数
- 1、
callback
执行数组中每个值 的函数- 1-1、
Accumulator (acc)
(累计器) - 1-2、
Current Value (cur)
(当前值) - 1-3、
Current Index (idx)
(当前索引) - 1-4、
Source Array (src)
(源数组)
- 1-1、
- 2、作为第一次调用
callback
函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素.
const arr = [1,2,3,4]
const result = arr.reduce((t,v)=>t+v)
// 或者
const result = arr.reduce((t,v)=>t+v,0)
console.log(result) //10
注意:对空数组调用reduce()和reduceRight()是不会执行其回调函数的,可认为reduce()对空数组无效。
用法
累加累乘
function accumulation(arr) {
return arr.reduce((t, v) => t + v, 0)
}
function multiplication(arr) {
return arr.reduce((t, v) => t * v, 1)
}
console.log(accumulation([1, 2, 3, 4])) //10
console.log(multiplication([1, 2, 3, 4])) //24
数组分隔
function Chunk(arr = [], size = 1) {
return arr.length
? arr.reduce(
(t, v) => (
t[t.length - 1].length === size
? t.push([v])
: t[t.length - 1].push(v),
t
),
[[]]
)
: []
}
console.log(Chunk([1,2,3,4,5], 2)) //[ [ 1, 2 ], [ 3, 4 ], [ 5 ] ]