浅谈javascript 归并方法


Posted in Javascript onJanuary 21, 2015

ECMAScript5为数组定义了2个归并方法:reduce()和reduceRight()。这两个方法都会迭代数组的随意项,然后构建一个最终返回的值。reduce()方法从数组的第一项开始,逐个遍历到数组的最后。reduceRight()方法则刚好相反,它从数组的最后一项开始,向前遍历到第一项。

这两个方法都接收两个参数:一个在每一项上调用的函数和作为归并基础的初始值。传给reduce()和reduceRight()的函数接收4个参数:前一个值,当前值,项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。

例如,我们可以使用reduce()方法来求数组中所有值的总和。

var nums = [1,2,3,4,5];
var sum = nums.reduce(function(prev,cur,index,array){
 retrun pre + cur;
});

上面的代码中,第一次执行回调函数,prev是1,cur是2。第二次prev是3,cur是3。reduce()方法会重复这个过程,直到把数组中的每一项都访问一次,最后将返回的结果赋值给sum。

reduceRight()方法的左右类似,只不过是反向执行。例如:

var nums = [1,2,3,4,5];
var sum = nums.reduceRight(function(prev,cur,index,array){
 retrun pre + cur;
});

这个例子中,第一次执行回调函数,prev是5,cur是4。最后求和的结果和reduce()方法相同,都是15。

支持reduce()和reduceRight()的浏览器有:IE9+,Firefox3+,Safari4+,Opeera10.5+和Chrome。

补充

ECMAScript5 还新增了2个归并数组的方法:reduce()和reduceRight()。

 这两个都会迭代数组的所有项
        reduce():从第一项开始逐个遍历到最后。
        reduceRight():从数组的最后一项开始,遍历到数组的第一项。

这两个方法都接受两个参数:在每一项上调用的函数(参数为:前一个值,当前值,项的索引,数组对象)

 这个函数返回的任何值斗殴会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,
         因此第一个参数是数组的第一项,第二个参数是数组的第二项
         和 作为归并基础的初始值。
        使用reduce()方法可以执行数组中所有值之和的操作,比如:

var values = [1, 2, 3, 4, 5];
    var sum = values.reduce(function (prev, cur, index, array) {
      return prev + cur;
    });
    alert(sum);
    //结果一样,只是方向相反而已
    var sum2=values.reduceRight(function (prev,cur,index,array) {
      return prev+cur;
    });
    alert(sum2);

归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。

归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。

归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。

Javascript 相关文章推荐
node.js不得不说的12点内容
Jul 14 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
Mar 24 Javascript
JavaScript动态修改背景颜色的方法
Apr 16 Javascript
JQuery鼠标移到小图显示大图效果的方法
Jun 10 Javascript
使用node.js中的Buffer类处理二进制数据的方法
Nov 26 Javascript
基于jquery实现二级联动效果
Mar 30 jQuery
socket.io与pm2(cluster)集群搭配的解决方案
Jun 02 Javascript
JS鼠标3次点击事件实现代码及扩展思路
Sep 12 Javascript
vue 中swiper的使用教程
May 22 Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
Oct 20 Javascript
你可能不知道的CORS跨域资源共享
Mar 13 Javascript
vue+elementUI实现表格关键字筛选高亮
Oct 26 Javascript
JS获取时间的方法
Jan 21 #Javascript
javascript中数组的定义及使用实例
Jan 21 #Javascript
html的DOM中document对象anchors集合用法实例
Jan 21 #Javascript
javascript 获取浏览器版本
Jan 21 #Javascript
javascript 实现 原路返回
Jan 21 #Javascript
html的DOM中document对象forms集合用法实例
Jan 21 #Javascript
浅谈javascript 函数内部属性
Jan 21 #Javascript
You might like
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
PHP中的数组处理函数实例总结
2016/01/09 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
jquery maxlength使用说明
2011/09/09 Javascript
JS中的public和private对象,即static修饰符
2012/01/18 Javascript
js原型链原理看图说明
2012/07/07 Javascript
jquery改变tr背景色的示例代码
2013/12/28 Javascript
jquery实现点击弹出层效果的简单实例
2014/03/03 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
2014/07/10 Javascript
jQuery给动态添加的元素绑定事件的方法
2015/03/09 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
artDialog+plupload实现多文件上传
2016/07/19 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
2016/10/21 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
详解Vue中状态管理Vuex
2017/05/11 Javascript
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
2019/02/14 jQuery
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
原生JS实现音乐播放器的示例代码
2021/02/25 Javascript
在Python的Django框架下使用django-tagging的教程
2015/05/30 Python
python中的错误处理
2016/04/10 Python
PyQt 线程类 QThread使用详解
2017/07/16 Python
Python实现购物车购物小程序
2018/04/18 Python
详解Python if-elif-else知识点
2018/06/11 Python
利用python循环创建多个文件的方法
2018/10/25 Python
Anaconda 查看、创建、管理和使用python环境的方法
2019/12/03 Python
PyCharm下载和安装详细步骤
2019/12/17 Python
vscode配置anaconda3的方法步骤
2020/08/08 Python
台湾饭店和机票预订网站:Expedia台湾
2016/08/05 全球购物
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
美国购物网站:Clickhere2shop
2021/01/28 全球购物
解释一下抽象方法和抽象类
2016/08/27 面试题
校园门卫岗位职责
2013/12/09 职场文书
颁奖晚会主持词
2014/03/25 职场文书
法院授权委托书格式
2014/09/28 职场文书