高程5.2.9归并方法
2015-11-20 13:39
225 查看
ECMAScript 5新增了两个归并数组的方法:reduce()和reduceRight().这两个方法都会迭代数组的所有项,然后构建一个最终返回的值.
其中reduce()从数组的第一项开始,逐个遍历到最后,而reduceRight(),顾名思义就是从右边也就是从最后一项开始,向前遍历到第一项.
这两个方法都接收两个参数,一个是每一项上调用的函数 和 (可选的)作为归并基础的初始值.
传给这两个方法的函数,接收4个参数:前一个值,当前值,项的索引 和 数组对象.
这个函数返回的值都将作为 第一个参数(前一个值) 自动传给下一项.
第一次执行回调函数,prev是1,cur是2.第二次时,prev是3(1+2),cur是3(数组的第三项).这样一直下去,直到把数组中每一项都访问一遍,最后返回结果
//有初始值时
reduceRight()和reduce()的作用类似,只不过方向是相反的,从后往前
这个例子里,第一执行回调函数,prev是5,cur是4,最后结果是相同的.
使用reduce()和reduceRight(),主要取决从哪头开始遍历数组,其他都是完全一样的.
其中reduce()从数组的第一项开始,逐个遍历到最后,而reduceRight(),顾名思义就是从右边也就是从最后一项开始,向前遍历到第一项.
这两个方法都接收两个参数,一个是每一项上调用的函数 和 (可选的)作为归并基础的初始值.
传给这两个方法的函数,接收4个参数:前一个值,当前值,项的索引 和 数组对象.
这个函数返回的值都将作为 第一个参数(前一个值) 自动传给下一项.
//第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项 var arr=[1,2,3,4,5]; var sum=arr.reduce(function(prev,cur,index,array){ return prev+cur; }); console.log(sum);//15
第一次执行回调函数,prev是1,cur是2.第二次时,prev是3(1+2),cur是3(数组的第三项).这样一直下去,直到把数组中每一项都访问一遍,最后返回结果
//有初始值时
var arr1=[3]; var sum1=arr1.reduce(function(prev,cur,index,array){ return prev+cur; },7) console.log(sum1);//10
reduceRight()和reduce()的作用类似,只不过方向是相反的,从后往前
var arr=[1,2,3,4,5]; var sum2=arr.reduceRight(function(prev,cur,index,array){ return prev+cur; }) console.log(sum2);//15
这个例子里,第一执行回调函数,prev是5,cur是4,最后结果是相同的.
使用reduce()和reduceRight(),主要取决从哪头开始遍历数组,其他都是完全一样的.
相关文章推荐
- 设置控件的大小比例
- 【三】注入框架RoboGuice使用:(Your First Resource Injection)
- eclipse无法导出android签名包的问题
- jQuery radio的取值与赋值
- HDU 2157 How many ways??
- Win8/8.1系统metro应用中使用IE浏览器出现闪退问题的解决方法
- ACE_Reactor
- HTTP请求报文与响应报文介绍
- http://blog.zhaojie.me/
- Nginx配置文件nginx.conf中文详解
- Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
- iMindMap如何设置图形样式
- 利用HTML和CSS实现常见的布局
- oracle获取服务器字符集
- 无线客户端同学快速学习ReactNative的学习曲线(转载)
- svn简单使用流程
- 类1调用类2的子方法不会触发类2的main方法
- 第13条:使用类和成员的可访问性最小化
- ACE中对线程的封装
- 有Main方法的Java类的类名取得