JavaScript - reduce方法 (Array)

JavaScript - reduce方法 (Array)

解释:reduce() 方法接收一个函数作为累加器(accumulator),数组
中的每个值(从左到右)开始合并,最终为一个值。

语法:arr.reduce(callback,[initialValue])

参数

callback:执行数组中每个值的函数,包含四个参数
previousValue:上一次调用回调返回的值,或者是提供的初始值(initialValue)
currentValue:数组中当前被处理的元素
index:当前元素在数组中的索引
array:调用 reduce 的数组
initialValue:作为第一次调用 callback 的第一个参数。

注意:如果不传入initialValue参数,那么当回调函数第一次执行时,previousValue是arr的第一个元素。如果传入
initialValue参数,那么当回调函数第一次执行时,previousValue取iniaialValue。initialValue的作用就是对这个
数组操作前指定一个初始值。

举个栗子:

1             var arr = [1,2,3,4];
2             var add = function(pre,cur){
3                 return pre + cur;//debug
4             }
5             var egreduce = arr.reduce(add);

我们看传入的arguments

第一次:

第二次:

第三次:

我们传入initialValue参数:

1             var arr = [1,2,3,4];
2             var add = function(pre,cur){
3                 return pre + cur;
4             }
5             var egreduce = arr.reduce(add,20);

第一次:

第二次:

第三次:

第四次:

可以看到传递了initialValue参数函数会多执行一次就是为了将initialValue参数这个初始值加到数组中。

reduce方法的用处

求数组中的最大值:

1             var arr = [2,34,45,23,12];
2             var egMax = arr.reduce(function(pre,cur){
3                 return pre>cur? pre:cur;
4             });//45

数组扁平化:

1             var arr = [
2                 [1,2,3],
3                 [4,5,6],
4                 [7,8,9]
5             ];
6             var egLink = arr.reduce(function(pre,cur){
7                 return pre.concat(cur);
8             })//[1, 2, 3, 4, 5, 6, 7, 8, 9]

参考资料:

Javascript的|MDN

http://www.tuicool.com/articles/fURVN3m

时间: 2024-12-11 08:58:46

JavaScript - reduce方法 (Array)的相关文章

reduce 方法 (Array) (JavaScript)

对数组中的所有元素调用指定的回调函数.该回调函数的返回值为累积结果,并且此返回值在下一次调用该回调函数时作为参数提供. 语法 array1.reduce(callbackfn[, initialValue]) 参数 参数 定义 array1 必需.一个数组对象. callbackfn 必需.一个接受最多四个参数的函数.对于数组中的每个元素,reduce 方法都会调用 callbackfn 函数一次. initialValue 可选.如果指定 initialValue,则它将用作初始值来启动累积.

JavaScript reduce() 方法

一.语法 arr.reduce(function(prev,cur,index,arr){ ... }, init); 其中, arr 表示原数组: prev 表示上一次调用回调时的返回值,或者初始值 init; cur 表示当前正在处理的数组元素: index 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1: init 表示初始值. 看上去是不是感觉很复杂?没关系,只是看起来而已,其实常用的参数只有两个:prev 和 cur.接下来我们跟着实例来看看具体用法吧

在JavaScript函数式编程里使用Map和Reduce方法

所有人都谈论道workflows支持ECMAScript6里出现的令人吃惊的新特性,因此我们很容易忘掉ECMAScript5带给我们一些很棒的工具方法来支持在JavaScript里进行函数编程,这些工具方法我们现在可以使用了.在这些函数方法里主要的是基于JavaScript 数组对象的map()方法和reduce()方法. 如果你如今还没有使用map()和reduce()方法,那么现在是时候开始使用了.如今绝大部分的JavaScript开发平台都与生俱来的支持ECMAScript5.使用Map方

JavaScript中数组Array方法详解

ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的. 1.Array.join()方法 Array.join()方法将数组中所有元素都转化为字符串并连接在一起,返回最后生成的字符串.可以指定一个可选的符号或字符串在生成的字符串中来分隔数组的各个元素.如果不指定分隔符,默认使用逗号.注意:此方法不会改变原始数组 var arr = ['a', 'b', 'c']; console.log(arr.join());

JavaScript归并方法reduce()和reduceRight()

ECMAScript 5还新增了两个归并数组的方法:reduce()和reduceRight().这两个方法都会迭代数组的所有项,然后构建一个最终返回的值.其中,reduce()方法从数组的第一项开始,逐个遍历到最后.而reduceRight()则从数组的最后一项开始,向前遍历到第一项. reduce()和reduceRight()函数接收4个参数:前一个值  当前值  项的索引  数组对象. 这个函数返回任何值都会作为第一个参数自动传给下一项.第一次迭代发生在数组的第二项上,因此第一个参数是数

Array.reduce()方法的使用

起因是学习异步函数的串行与并行写法时,发现reduce方法可以简化写法,然后看到一篇博客里面这样一段代码: var array = [1, [2, [3, 4], 5], 6]; function flatten(array) { return array.reduce(function (arr, item) { return (Object.prototype.toString.call(item) === '[object Array]' ? Array.prototype.push.ap

通过节食来解释 JavaScript 的Reduce方法!

JavaScript中的reduce方法为您提供了一种简单的方法来获取值数组并将它们组合成一个值,或者根据多个类别对数组求和. 哇,一句话说得太多了,让我们一步一步来吧! 当然,你可以使用 for 循环遍历数组并对每个值执行特定操作.但是,如果你不使用 filter().map() 和reduce() 等方法,那么你的代码将变得更加难以阅读.其他开发人员需要彻底阅读每个循环才能理解其目的,而且容易出现更多的 bug,因为你需要创建更多的变量来跟踪单个值. Filter 方法接受初始数组中的所有元

JavaScript中的Array.prototype.slice.call()方法学习

JavaScript中的Array.prototype.slice.call(arguments)能将有length属性的对象转换为数组(特别注意: 这个对象一定要有length属性). 但有一个例外,IE下的节点集合它不能转换(因为IE下的dom对象是以com对象的形式实现,js对象和com对象不能进行转换) 首先,我们来看看JavaScript中的slice用法, 在JavaScript中Array是一个类,slice是此类中的一个方法,slice的中文意思是 '截取' 一个是String.

JavaScript数组方法--reduce、reduceRIght、reverse

今天写的reduce是比较复杂的一个数组方法,其实在这之前我也用过reduce,可是每次用起来总感觉不那么顺手,主要还是因为不熟,对reduce本身不熟.首先reduce这个单词翻译为中文,不那么直观,再加上他的示例比较简单,导致用在复杂情况下,就有点懵逼的感觉.通过自己的理解,我们重构一次,可能更能够方便理解! reduce:reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值.看到MDN给的这句解释,可能就懵了!什么叫reduce