javaScript中 数组的新方法(reduce)
Posted yeanling
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaScript中 数组的新方法(reduce)相关的知识,希望对你有一定的参考价值。
定义和用法
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
reduce() 可以作为一个高阶函数,用于函数的 compose。
注意: reduce() 对于空数组是不会执行回调函数的。
浏览器支持
表格中的数字表示支持该方法的第一个浏览器版本号。
语法 :array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
参数
栗子1:
var arr = [1, 2, 3, 4];
var sum = arr.reduce(function(prev, cur, index, arr)
console.log(prev, cur, index);
return prev + cur;
)
console.log(arr, sum);
打印结果:
1 2 1
3 3 2
6 4 3
[1, 2, 3, 4] 10
这里可以看出,上面的例子index是从1开始的,第一次的prev的值是数组的第一个值。数组长度是4,但是reduce函数循环3次。
栗子2:
var arr = [1, 2, 3, 4];
var sum = arr.reduce(function(prev, cur, index, arr)
console.log(prev, cur, index);
return prev + cur;
,0) //注意这里设置了初始值
console.log(arr, sum);
打印结果:
0 1 0
1 2 1
3 3 2
6 4 3
[1, 2, 3, 4] 10
这个例子index是从0开始的,第一次的prev的值是我们设置的初始值0,数组长度是4,reduce函数循环4次。
结论:如果没有提供initialValue,reduce 会从索引1的地方开始执行 callback 方法,跳过第一个索引。如果提供initialValue,从索引0开始。
以上是关于javaScript中 数组的新方法(reduce)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 javascript 中递归使用 reduce() 方法? [复制]
在javascript中,为啥这个数组的reduce方法在下面的代码中给出了这个输出?