js模拟实现Array的sort方法


Posted in Javascript onDecember 11, 2007

JavaScript的Array对象有一个sort方法,用于实现对数组元素的排序,该方法默认按照数组项ASCII 字符顺序升序排列。  
如[6,7,9,1,-1].sort();执行后数组变为[-1,1,6,7,9]。  

对于需要降序排列或非字符串排序,该方法就不能很好的执行了。  

当然,sort有一个可选参数,它能帮我们解决这个问题,通过为sort传入一个函数,sort根据函数返回值进行排序。  

数组为该函数默认传入数组中的两个元素,如传入a,b,如果函数返回值大于0,则排序方式为b,a,如果返回值小于0,则排序结果为a,b。  

具体含义不好解释,当初我也对这个sort其到底是怎么排序的不理解。  

如果知道了其实现过程,就对他的排序原理明了了。  

sort的实现其实很像是一个简单的冒泡排序。  

偶今日对其进行了模拟,看懂这个函数你一定就明白sort的原理了。  

<script type="text/javascript">  
 <!--  
  var myarray = new Array(8,6,7,9,1,-1,4);  
  var myarray1 = new Array(8,6,7,9,1,-1,4);  
  var sortAsc = function(x,y) { return x-y; };  
  var sortDesc = function(x,y) { return y-x; };  
  Array.prototype.st=function(fn){  
    var t;  
    fn=fn||function(x,y){return x-y};  
    for(var i=0;i<this.length;i++){  
      for(var j=i;j<this.length;j++){  
        if(fn(this[i],this[j])>0){  
          t=this[i];  
          this[i]=this[j];  
          this[j]=t;  
        }  
      }  
    }  
  }  
  myarray.st();  
  alert("默认升序排列:"+myarray);  

  myarray.st(sortDesc);  
  alert("降序排列:"+myarray);  

  myarray.st(sortAsc);  
  alert("升序排列:"+myarray);  
    
  myarray1.sort(function(){return 1}); //注:js默认的sort对此排序结果跟这个不一样,其排序方式还暂不理解  
  alert("逆序排列:"+myarray1);    
    
 //-->  
 </script>

总结

以上所述是小编给大家介绍的js模拟实现Array的sort方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
清除div下面的所有标签的方法
Feb 17 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
Dec 22 Javascript
JavaScript实现基于十进制的四舍五入实例
Jul 17 Javascript
javascript高级编程之函数表达式 递归和闭包函数
Nov 29 Javascript
完美实现bootstrap分页查询
Dec 09 Javascript
常用的Javascript设计模式小结
Dec 09 Javascript
轮播的简单实现方法
Jul 28 Javascript
用js制作淘宝放大镜效果
Oct 28 Javascript
jQuery内容筛选选择器实例代码
Feb 06 Javascript
JavaScript判断浏览器和hack滚动条的写法
Jul 23 Javascript
ES6中Symbol、Set和Map用法详解
Aug 20 Javascript
小程序实现简单语音聊天的示例代码
Jul 24 Javascript
看了就知道什么是JSON
Dec 09 #Javascript
javascript while语句和do while语句的区别分析
Dec 08 #Javascript
js中将多个语句写成一个语句的两种方法小结
Dec 08 #Javascript
JavaScript开发时的五个注意事项
Dec 08 #Javascript
JS的递增/递减运算符和带操作的赋值运算符的等价式
Dec 08 #Javascript
javascript数组使用调用方法汇总
Dec 08 #Javascript
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
Dec 08 #Javascript
You might like
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
2014/03/25 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
PHP实现仿Google分页效果的分页函数
2015/07/29 PHP
php 函数中静态变量使用的问题实例分析
2020/03/05 PHP
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
2011/08/28 Javascript
JQuery select控件的相关操作实现代码
2012/09/14 Javascript
jquery插件jSignature实现手动签名
2015/05/04 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
在其他地方你学不到的jQuery小贴士和技巧(欢迎收藏)
2016/01/20 Javascript
nodeJs爬虫获取数据简单实现代码
2016/03/29 NodeJs
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
JavaScript中push(),join() 函数 实例详解
2016/09/06 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
基于Vue生产环境部署详解
2017/09/15 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
js判断密码强度的方法
2020/03/18 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
Python中使用logging模块代替print(logging简明指南)
2014/07/09 Python
详解Python中的文本处理
2015/04/11 Python
利用Python抓取行政区划码的方法
2016/11/28 Python
使用Python进行目录的对比方法
2018/11/01 Python
python实现控制台打印的方法
2019/01/12 Python
详解django实现自定义manage命令的扩展
2019/08/13 Python
解决pytorch报错:AssertionError: Invalid device id的问题
2020/01/10 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
使用CSS3制作版头动画效果
2020/12/24 HTML / CSS
清除canvas画布内容(点擦除+线擦除)
2020/08/12 HTML / CSS
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
PacSun官网:加州生活方式服装、鞋子和配饰
2018/03/10 全球购物
长曲棍球装备:Lacrosse Monkey
2020/12/02 全球购物
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
extern在函数声明中是什么意思
2014/01/19 面试题
秋季婚礼证婚词
2014/01/11 职场文书
超市创业计划书
2014/04/24 职场文书
机关干部个人对照检查材料思想汇报
2014/09/28 职场文书