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 append() html时的小问题的解决方法
Dec 16 Javascript
JavaScript实现页面实时显示当前时间的简单实例
Jul 20 Javascript
js实现通用的微信分享组件示例
Mar 10 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
Mar 01 Javascript
js点击按钮实现水波纹效果代码(CSS3和Canves)
Sep 15 Javascript
Bootstrap中datetimepicker使用小结
Dec 28 Javascript
解决浏览器会自动填充密码的问题
Apr 28 Javascript
vue通过点击事件读取音频文件的方法
May 30 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
Jul 21 Javascript
echarts实现折线图的拖拽效果
Dec 19 Javascript
JS实现关闭小广告特效
Jan 29 Javascript
vue表单验证之禁止input输入框输入空格
Dec 03 Vue.js
看了就知道什么是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函数
2006/10/09 PHP
PHP设计模式之迭代器模式的深入解析
2013/06/13 PHP
php中的ini配置原理详解
2014/10/14 PHP
javascript数组与php数组的地址传递及值传递用法实例
2015/01/22 PHP
ThinkPHP5框架缓存查询操作分析
2018/05/30 PHP
javascript拖拽上传类库DropzoneJS使用方法
2013/12/05 Javascript
Javascript中的delete操作符详细介绍
2014/06/06 Javascript
Node.js实现在目录中查找某个字符串及所在文件
2014/09/03 Javascript
js实现YouKu的漂亮搜索框效果
2015/08/19 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
设计模式中的组合模式在JavaScript程序构建中的使用
2016/05/18 Javascript
JSON与String互转的实现方法(Javascript)
2016/09/27 Javascript
Vue2路由动画效果的实现代码
2017/07/10 Javascript
vue 纯js监听滚动条到底部的实例讲解
2018/09/03 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
2019/06/13 Javascript
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
2009/04/09 Python
详解Python中的__init__和__new__
2014/03/12 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2018/06/14 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
python中的&amp;&amp;及||的实现示例
2019/08/07 Python
python生成并处理uuid的实现方式
2020/03/03 Python
python中threading开启关闭线程操作
2020/05/02 Python
售后主管岗位职责
2013/12/08 职场文书
自我鉴定三原则
2014/01/13 职场文书
自荐书4要点
2014/01/25 职场文书
最经典的大学生职业生涯规划范文
2014/03/05 职场文书
大学生党校培训心得体会
2014/09/11 职场文书
2014年大学团支部工作总结
2014/12/02 职场文书
大学生实习证明
2015/06/16 职场文书
关于保护环境的建议书
2019/06/24 职场文书
MySQL 8.0 Online DDL快速加列的相关总结
2021/06/02 MySQL
浅析Python实现DFA算法
2021/06/26 Python
JavaScript数组 几个常用方法总结
2021/11/11 Javascript
JavaScript实现两个数组的交集
2022/03/25 Javascript
尝试使用Python爬取城市租房信息
2022/04/12 Python