ES6的reduce用法
1. 求和数组(基本用法)let list = '12345'.split('')const total = list.reduce((val, oldVal) => val + oldVal)console..log(total) // 152. 去重数组
·
Array.reduce参数
该方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
参数
callbackFn
一个 “reduce” 函数,包含四个参数:
previousValue
:上一次调用callbackFn
时的返回值。在第一次调用时,若指定了初始值initialValue
,其值则为initialValue
,否则为数组索引为 0 的元素array[0]
。currentValue
:数组中正在处理的元素。在第一次调用时,若指定了初始值initialValue
,其值则为数组索引为 0 的元素array[0]
,否则为array[1]
。currentIndex
:数组中正在处理的元素的索引。若指定了初始值initialValue
,则起始索引号为 0,否则从索引 1 起始。array
:用于遍历的数组。
initialValue
可选
作为第一次调用 callback
函数时参数 previousValue 的值。若指定了初始值 initialValue
,则 currentValue
则将使用数组第一个元素;否则 previousValue
将使用数组第一个元素,而 currentValue
将使用数组第二个元素。
返回值
使用 “reduce” 回调函数遍历整个数组后的结果。
使用场景
1. 求和数组(基本用法)
let list = '12345'.split('')
const total = list.reduce((val, oldVal) => val + oldVal)
console..log(total) // 15
2. 去重数组
let list = '123123'.split('')
const newList = list.reduce((pre, cur) => {
return pre.includes(cur) ? pre : pre.concat(cur)
}, [])
console.log(newList) // [1, 2, 3]
3. 求和数组中的对象
const list = []
for (let i = 0 ; i < 5 ; i++) {
list.push({
val: i + 1
})
}
const newList = list.reduce((pre, cur) => {
return pre + cur.val
}, 0)
console.log(newList) // 15
4. 计算数组中字符出现的次数
const list = 'abcabcabc'.split('')
const pre = list.reduce((pre, cur) => {
if (pre[cur]) {
pre[cur]++
} else {
pre[cur] = 1
}
return pre
}, {})
console.log(pre) // {a:3,b:3,c:3}
更多推荐
已为社区贡献1条内容
所有评论(0)