源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

详解JavaScript中数组的reduce方法

  • 时间:2020-04-06 00:10 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:详解JavaScript中数组的reduce方法
[b]介绍[/b] 我们先来看看这个方法的官方概述:[code]reduce() [/code]方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值。 你一定也和我一样看的有点迷糊,其实[code]reduce[/code]接收的就是一个回调函数,去调用数组里的每一项,直到数组结束。 [b]我们来举个例子大家就很明白了。[/b] 假设我有一串数组,数组里放的全是数字,我要算出这些数字的总和是多少。正常情况下我们会循环,然后一个个加,有了reduce就不用那么麻烦了,只用一行代码。
var total = [0,1,2,3,4].reduce((a, b)=>a + b); //10
[b]这个方法是如何工作的呢?[/b] [code]reduce[/code]接受一个函数,函数有四个参数,分别是:      1、上一次的值;      2、当前值;      3、当前值的索引;      4、数组; 我们还是以上面那个数组为例,把这几个参数打印出来看看:
[0, 1, 2, 3, 4].reduce(function(previousValue, currentValue, index, array){
 return previousValue + currentValue;
});
得到的结果是: [img]http://files.jb51.net/file_images/article/201612/201612294807546.png?201611294816[/img] 分析一下这个结果,这个回调函数共调用了4次,因为第一次没有[code]previousValue[/code],所以直接从数组的第二项开始,一只调用到数组结束。 [code]reduce[/code]还有第二个参数,我们可以把这个参数作为第一次调用[code]callback[/code]时的第一个参数,上面这个例子因为没有第二个参数,所以直接从数组的第二项开始,如果我们给了第二个参数为5,那么结果就是这样的:
[0, 1, 2, 3, 4].reduce(function(previousValue, currentValue, index, array){
 return previousValue + currentValue;
},5);
[img]http://files.jb51.net/file_images/article/201612/201612294847001.png?201611294854[/img] 第一次调用的[code]previousValue[/code]的值就用传入的第二个参数代替,函数被调用了5次,也就是数组的[code]length[/code]。 [code]reduce[/code]可以帮助我们轻松的完成很多事,除了累加,还有扁平化一个二维数组:
var flattened = [[0, 1], [2, 3], [4, 5]].reduce(function(a, b) {
 return a.concat(b);
}, []);
// flattened == [0, 1, 2, 3, 4, 5]
[b]总结[/b] 我暂时能想到的常用的就这两个,不过肯定还有很多地方能用到啦。以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部