javascript Array reduce()函数使用方法
定义
对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。也就是reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
语法
arr.reduce(function(total, currentValue, currentIndex, arr), initialValue)
参数说明
参数 | 描述 |
function(total, currentValue, currentIndex, arr) | 必需,回调函数有4个参数: 必需,total:累计器,计算结束后的返回值。累计器累计回调的返回值; 它是上一次调用回调时返回的累积值。 必需,currentValue:当前值,数组中正在处理的元素。 非必需, currentIndex:当前索引,数组中正在处理的当前元素的索引。 非必须,arr:源数组,调用reduce()的数组 |
initialValue | 可选,作为第一次调用 callback函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错 |
描述说明:
reduce为数组中的每一个元素依次执行callback函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:
● accumulator 累计器
● currentValue 当前值
● currentIndex 当前索引
● array 数组
回调函数第一次执行时,accumulator 和currentValue的取值有两种情况:如果调用reduce()时提供了initialValue,accumulator取值为initialValue,currentValue取数组中的第一个值;如果没有提供 initialValue,那么accumulator取数组中的第一个值,currentValue取数组中的第二个值。
注意:如果没有提供initialValue,reduce 会从索引1的地方开始执行 callback 方法,跳过第一个索引。如果提供initialValue,从索引0开始
实例
<script type="text/javascript"> var numbers = [0, 1, 2, 3, 4] var result = numbers.reduce(function(accumulator, currentValue, currentIndex, array){ return accumulator + currentValue; }); alert(result) </script>
运行结果
10
实例执行过程
callback 被调用四次,每次调用的参数和返回值如下表:
callback | accumulator | currentValue | currentIndex | array | return value |
---|---|---|---|---|---|
first call | 0 | 1 | 1 | [0, 1, 2, 3, 4] | 1 |
second call | 1 | 2 | 2 | [0, 1, 2, 3, 4] | 3 |
third call | 3 | 3 | 3 | [0, 1, 2, 3, 4] | 6 |
fourth call | 6 | 4 | 4 | [0, 1, 2, 3, 4] | 10 |
由reduce返回的值将是上次回调调用的值(10)。
你同样可以使用箭头函数的形式,下面的代码会输出跟前面一样的结果V型知识库 www.vxzsk.com
<script type="text/javascript"> var numbers = [0, 1, 2, 3, 4] var result2= numbers.reduce((prev, curr) => prev + curr ); alert(result2) </script>
运行结果
10
感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程