javascript Array reduceRight()函数使用方法
定义
接受一个函数作为累加器(accumulator)和数组的每个值(从右到左)将其减少为单个值。reduceRight() 方法的功能和 reduce() 功能是一样的,不同的是 reduceRight() 从数组的末尾向前将数组中的数组项做累加。
语法
array.reduceRight(function(total, currentValue, currentIndex, arr), initialValue)
参数说明
参数 | 描述 |
function(total,currentValue, index,arr) | 必须,一个回调函数,用来操作数组中的每个元素。 参数 描述 total 必需。初始值, 或者计算结束后的返回值。即上一次调用回调的返回值。 currentValue 必需。当前元素 currentIndex 可选。当前元素的索引 arr 可选。当前元素所属的数组对象。 |
initialValue | 可作为第一次调用回调 callback 的第一个参数 |
描述说明
reduceRight 为数组中每个元素调用一次 callback 回调函数,但是数组中被删除的索引或从未被赋值的索引会跳过。回调函数接受四个参数:初始值(或上次调用回调的返回值)、当前元素值、当前索引,以及调用 reduce 的数组。
可以像下面这样调用 reduceRight 的回调函数 callback:
array.reduceRight(function(previousValue, currentValue, index, array) { // ...});
首次调用回调函数时,previousValue 和 currentValue 可以是两个值之一。如果调用 reduceRight 时提供了 initialValue 参数,则 previousValue 等于 initialValue,currentValue 等于数组中的最后一个值。如果没有提供 initialValue 参数,则 previousValue 等于数组最后一个值, currentValue 等于数组中倒数第二个值。
如果数组为空,且没有提供 initialValue 参数,将会抛出一个 TypeError 错误。如果数组只有一个元素且没有提供 initialValue 参数,或者提供了 initialValue 参数,但是数组为空将会直接返回数组中的那一个元素或 initialValue 参数,而不会调用 callback。
该函数的完整执行过程见下例:
[0, 1, 2, 3, 4].reduceRight(function(previousValue, currentValue, index, array) { return previousValue + currentValue; });
回调将会被调用四次,每次调用的参数及返回值如下:
previousValue | currentValue | index | array | return value | |
---|---|---|---|---|---|
first call | 4 | 3 | 3 | [0,1,2,3,4] | 7 |
second call | 7 | 2 | 2 | [0,1,2,3,4] | 9 |
third call | 9 | 1 | 1 | [0,1,2,3,4] | 10 |
fourth call | 10 | 0 | 0 | [0,1,2,3,4] | 10 |
reduceRight 返回值是最后一次调用回调的返回值(10)。
实例
求一个数组中所有值的和
<script type="text/javascript"> var total = [0, 1, 2, 3].reduceRight(function(a, b) { return a + b; }); // total == 6 alert(total) </script>
运行结果
6
感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程