js Array reduce

2019年01月06日 13:35 | 1939次浏览 作者原创 版权保护

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 被调用四次,每次调用的参数和返回值如下表:

callbackaccumulatorcurrentValuecurrentIndexarrayreturn value
first call011[0, 1, 2, 3, 4]1
second call122[0, 1, 2, 3, 4]3
third call333[0, 1, 2, 3, 4]6
fourth call644[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



小说《我是全球混乱的源头》
此文章本站原创,地址 https://www.vxzsk.com/1982.html   转载请注明出处!谢谢!

感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程


上一篇:js Array push 下一篇:JAVA程序设计基础知识
^