浅谈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 相关文章推荐
javascript 清除输入框中的数据
Apr 13 Javascript
JQUERY操作JSON实例代码
Feb 09 Javascript
JavaScript 语言的递归编程
May 18 Javascript
aspx中利用js实现确认删除代码
Jul 22 Javascript
关于jquery性能最佳实践的讨论,与求教
Mar 30 Javascript
JavaScript自定义数组排序方法
Feb 12 Javascript
jQuery 中ajax异步调用的四种方式
Jun 28 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
Aug 22 Javascript
Vue精简版风格概述
Jan 30 Javascript
vue项目中使用lib-flexible解决移动端适配的问题解决
Aug 23 Javascript
vue项目中仿element-ui弹框效果的实例代码
Apr 22 Javascript
vue 导航守卫和axios拦截器有哪些区别
Dec 19 Vue.js
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 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
PHP统计当前在线用户数实例讲解
2015/10/21 PHP
PHP使用PDO抽象层获取查询结果的方法示例
2018/05/10 PHP
laravel admin实现分类树/模型树的示例代码
2020/06/10 PHP
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
理解javascript函数式编程中的闭包(closure)
2016/03/08 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
2017/01/20 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
Vue.js中 v-model 指令的修饰符详解
2018/12/03 Javascript
JavaScript代码调试方法实例小结
2019/01/05 Javascript
实例讲解vue源码架构
2019/01/24 Javascript
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
朴素贝叶斯算法的python实现方法
2014/11/18 Python
Python中使用urllib2模块编写爬虫的简单上手示例
2016/01/20 Python
Python数据类型详解(四)字典:dict
2016/05/12 Python
浅谈django开发者模式中的autoreload是如何实现的
2017/08/18 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/27 Python
python2.7实现邮件发送功能
2018/12/12 Python
python交易记录整合交易类详解
2019/07/03 Python
pytorch+lstm实现的pos示例
2020/01/14 Python
如何利用Python matplotlib绘制雷达图
2020/12/21 Python
python 基于opencv实现图像增强
2020/12/23 Python
pycharm 快速解决python代码冲突的问题
2021/01/15 Python
以实惠的价格轻松租车,免费取消:Easyrentcars
2019/07/16 全球购物
SAZAC的动物连体衣和动物睡衣:Kigurumi Shop
2020/03/14 全球购物
opencv实现图像平移效果
2021/03/24 Python
酒吧副总经理岗位职责
2013/12/10 职场文书
常务副总经理任命书
2014/06/05 职场文书
法学专业大学生实习自我鉴定
2014/10/05 职场文书
晚会开幕词范文
2016/03/04 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书
长辈生日祝福语大全(72句)
2019/08/09 职场文书
导游词之上海东方明珠塔
2019/09/25 职场文书
JavaScript与JQuery框架基础入门教程
2021/07/15 Javascript