运用reduce()方法,可以高效简洁的生成想要的数据结构。
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
- total: 必需。initialValue,或函数先前返回的值。
- currentValue: 必需。当前元素的值。
- index: 可选。当前元素的数组索引。
- arr: 可选。当前元素所属的数组对象
- initialValue: 可选。作为初始值传递给函数的值。
示例代码:
const dragPositions = [1, 2, 3, 4].reduce((acc, n) => {
acc[`drag${n}`] = { x: 0, y: 0 }
return acc
}, {})
image.png
示例中,未指定initialValue初始值,执行了3遍
const func = [1, 2, 3, 4].reduce((total, n) => {
console.log('total: ', total, 'n: ' + n)
return total + n
})
// total: 1 n: 2
// total: 3 n: 3
// total: 6 n: 4
示例中,指定initialValue初始值,执行了4遍
const func = [1, 2, 3, 4].reduce((total, n) => {
console.log('total: ', total, 'n: ' + n)
return total + n
}, 10)
// total: 10 n: 1
// total: 11 n: 2
// total: 13 n: 3
// total: 16 n: 4
用法定义
reduce() 方法将数组缩减为单个值。
reduce() 方法为数组的每个值(从左到右)执行提供的函数。
函数的返回值存储在累加器中(结果/总计)。
对没有值的数组元素,不执行 reduce() 方法。
注释
reduce() 方法不会改变原始数组。
网友评论