Array.prototype.reduce()
基本使用
1 | arr.reduce(function(previousValue, item, index, arr){}, |
- callback入参:
- previousValue:上一次调用 callbackFn 时的返回值。在第一次调用时,若指定了初始值 initialValue,其值则为 initialValue,否则为数组索引为 0 的元素 array[0]。
- item initialValue,其值则为数组索引为 0 的元素 array[0],否则为 array[1]。
- index:数组中正在处理的元素的索引。若指定了初始值 initialValue,则起始索引号为 0,否则从索引 1 起始。
- arr:用于遍历的数组。
initialValue 可选
作为第一次调用 callback 函数时参数 previousValue 的值。若指定了初始值 initialValue,则 currentValue 则将使用数组第一个元素;否则 previousValue 将使用数组第一个元素,而 currentValue 将使用数组第二个元素。返回值
使用 “reducer” 回调函数遍历整个数组后的结果。如果数组为空且未指定初始值 initialValue,则会抛出 TypeError。
使用场景
1 求所有数组的和
1 | const arr = [1,2,3,4] |
2 数组扁平化
1 | const arr = [[1,2], [3,4],[5,6]] |
3 统计数组中元素出现的次数
1 | const arr = [1,2,2,3,3,3,4,4] |
4 按照属性对object进行分类
1 | let people = [ |
5 数组去重
1 | const arr = [1,2,2,2,3,3,4] |
6 函数组合实现管道-高阶函数
1 | const double = x => x + x |
7 reduce实现map
1 | const arr = [1,2,,3] |
手写实现reduce
1 | Array.prototype.myReduce = function(fn, initialValue){ |
-------------本文结束&感谢您的阅读-------------
相关文章