Reduce
前言
以前只知道 reduce 可以拿来做数组求和
但其实 reduce 的功能远不于此 所以在此做个总结
用法
array.reduce(function(accumulator, currentValue, currentIndex, array), initialValue)
accumulator: 累加器 即函数上一次调用的返回值
第一次的时候为 initialValue || arr[0]
currentValue: 数组中函数正在处理的的值
第一次的时候 initialValue || arr[1]
currentIndex: (可选)数据中正在处理的元素索引
如果提供了 initialValue 从 0 开始 否则从 1 开始
array: (可选)调用 reduce 的数组
initialValue: (可选)累加器的初始值。没有时 累加器第一次的值为 currentValue
注意: 在对没有设置初始值的空数组调用 reduce 方法时会报错
为了更直观的感受 我们来看一个例子
callback
accumulator
currentValue
currentIndex
array
return value
first call
10(初始值)
1(数组第一个元素)
0(有初始值为 0)
[1, 2, 3, 4]
11
second call
11
2
1
[1, 2, 3, 4]
13
third call
13
3
2
[1, 2, 3, 4]
16
fourth call
16
4
3
[1, 2, 3, 4]
20
使用场景
case1
可以做一个简单的数组求和
case2
可以将二维数组扁平化
case3
可以计算数组中每个元素出现的次数
思路: 初始值设置为{} 用作我们放结果的容器 然后如果容器中有这个元素 就 value+1 没有就初始化 key
case4
数组去重
Last updated
Was this helpful?