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 数组方法filter和reduce

在javascript中,为啥这个数组的reduce方法在下面的代码中给出了这个输出?

提升代码格调——JavaScript 数组的 reduce() 方法入门

javascript reduce方法用的多么

JavaScript数组方法--reducereduceRIghtreverse