码迷,mamicode.com
首页 > 编程语言 > 详细

javaScript中 数组的新方法(reduce)

时间:2019-06-11 10:55:40      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:循环   str   高阶函数   rev   支持   pos   技术   back   mic   

定义和用法

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)

标签:循环   str   高阶函数   rev   支持   pos   技术   back   mic   

原文地址:https://www.cnblogs.com/yeanling/p/11002075.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!