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 相关文章推荐
jQuery Ajax 全解析
Feb 08 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
Nov 25 Javascript
JQuery结合CSS操作打印样式的方法
Dec 24 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
May 29 Javascript
PHP中CURL的几个经典应用实例
Jan 23 Javascript
尝试动手制作javascript放大镜效果
Dec 25 Javascript
基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解
May 12 Javascript
js模态对话框使用方法详解
Feb 16 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
May 09 Javascript
jQuery为某个div加入行样式
Jun 09 jQuery
JavaScript输入分钟、秒倒计时技巧总结(附代码)
Aug 17 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
Sep 01 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实现的Timer页面运行时间监测类
2014/09/24 PHP
jQuery 入门级学习笔记及源码
2010/01/22 Javascript
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
2011/08/28 Javascript
六款帮助你实现惊艳视差滚动效果的jQuery插件
2012/09/14 Javascript
使用jQuery或者原生js实现鼠标滚动加载页面新数据
2016/03/06 Javascript
Angular中的interceptors拦截器
2017/06/25 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
2018/08/09 Javascript
python列表与元组详解实例
2013/11/01 Python
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
python打开文件并获取文件相关属性的方法
2015/04/23 Python
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
Python优化技巧之利用ctypes提高执行速度
2016/09/11 Python
Python中的random.uniform()函数教程与实例解析
2019/03/02 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
Python如何实现转换URL详解
2019/07/02 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
pycharm部署、配置anaconda环境的教程
2020/03/24 Python
利用pyecharts读取csv并进行数据统计可视化的实现
2020/04/17 Python
jupyter lab文件导出/下载方式
2020/04/22 Python
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
Hotels.com香港酒店网:你的自由行酒店订房专家
2018/01/22 全球购物
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
什么是Linux虚拟文件系统VFS
2012/01/31 面试题
《王二小》教学反思
2014/02/27 职场文书
2014年大学生党课心得体会范文
2014/03/29 职场文书
中学生演讲稿
2014/04/26 职场文书
老人节标语大全
2014/10/08 职场文书
租车协议书范本2014
2014/11/17 职场文书
2014年教务处工作总结
2014/12/03 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
电工实训心得体会
2016/01/14 职场文书
100句人生哲理语录集锦:强者征服今天,懒汉坐等明天
2019/10/18 职场文书
Python可视化神器pyecharts绘制地理图表
2022/07/07 Python
Python 第三方库 openpyxl 的安装过程
2022/12/24 Python