详解JavaScript中数组的reduce方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

详解JavaScript中数组的reduce⽅法
介绍
我们先来看看这个⽅法的官⽅概述:reduce() ⽅法接收⼀个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为⼀个值。

你⼀定也和我⼀样看的有点迷糊,其实reduce接收的就是⼀个回调函数,去调⽤数组⾥的每⼀项,直到数组结束。

我们来举个例⼦⼤家就很明⽩了。

假设我有⼀串数组,数组⾥放的全是数字,我要算出这些数字的总和是多少。

正常情况下我们会循环,然后⼀个个加,有了reduce就不⽤那么⿇烦了,只⽤⼀⾏代码。

var total = [0,1,2,3,4].reduce((a, b)=>a + b); //10
这个⽅法是如何⼯作的呢?
reduce接受⼀个函数,函数有四个参数,分别是:
1、上⼀次的值;
2、当前值;
3、当前值的索引;
4、数组;
我们还是以上⾯那个数组为例,把这⼏个参数打印出来看看:
[0, 1, 2, 3, 4].reduce(function(previousValue, currentValue, index, array){
return previousValue + currentValue;
});
得到的结果是:
分析⼀下这个结果,这个回调函数共调⽤了4次,因为第⼀次没有previousValue,所以直接从数组的第⼆项开始,⼀只调⽤到数组结束。

reduce还有第⼆个参数,我们可以把这个参数作为第⼀次调⽤callback时的第⼀个参数,上⾯这个例⼦因为没有第⼆个参数,所以直接从数组的第⼆项开始,如果我们给了第⼆个参数为5,那么结果就是这样的:
[0, 1, 2, 3, 4].reduce(function(previousValue, currentValue, index, array){
return previousValue + currentValue;
},5);
第⼀次调⽤的previousValue的值就⽤传⼊的第⼆个参数代替,函数被调⽤了5次,也就是数组的length。

reduce可以帮助我们轻松的完成很多事,除了累加,还有扁平化⼀个⼆维数组:
var flattened = [[0, 1], [2, 3], [4, 5]].reduce(function(a, b) {
return a.concat(b);
}, []);
// flattened == [0, 1, 2, 3, 4, 5]
总结
我暂时能想到的常⽤的就这两个,不过肯定还有很多地⽅能⽤到啦。

以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,如果有疑问⼤家可以留⾔交流。

相关文档
最新文档