javascript 数组排序函数


Posted in Javascript onAugust 20, 2009

arrayobj.sort(sortfunction);
参数:sortFunction
可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。
sort 方法将 Array 对象进行适当的排序;在执行过程中并不会创建新的 Array 对象。
如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一:
负值,如果所传递的第一个参数比第二个参数小。
零,如果两个参数相等。
正值,如果第一个参数比第二个参数大。
以上的方法在一维的排序还是很方便的,但像SQL语句中的ORDER BY 一样的多键值排序由怎么做呢?
多维数组的多键值排序,则需要复杂一些,但不需要用循环解决。实际解决的道理是一样的 。
数字:
以下的例子是将数字的多维数组按照第5列,第9列,第3列的顺序排序,像SQL语句中的ORDER BY col5,col9,col7。数字的时候可以直接两个项目相减,以结果作为返回值即可。

<script language=javascript> 
var myArray = new Array(); 
for(var i=0;i<10;i++ )...{ 
myArray[i]=new Array(); 
myArray[i][0]=Math.floor(Math.random()*10); 
myArray[i]=Math.floor(Math.random()*10); 
myArray[i]=Math.floor(Math.random()*10); 
myArray[i]=Math.floor(Math.random()*10); 
myArray[i]=Math.floor(Math.random()*10); 
myArray[i]=Math.floor(Math.random()*10); 
myArray[i]=Math.floor(Math.random()*10); 
myArray[i]=Math.floor(Math.random()*10); 
myArray[i]=Math.floor(Math.random()*10); 
} 
myArray.sort( function(x, y) ...{ 
return (x[0]==y[0])?((x==y)?(x-y):(x-y)):(x-y) 
}); 
for(var i=0;i<myArray.length;i++ )...{ 
document.write(myArray[i].join(",") + "<br/>"); 
} 
</script>

字符:
字符的时候sortFunction中的项目不能像数字一样直接相减,需要调用
str1.localeCompare( str2 )方法来作比较,从而满足返回值。以下是多维数组的第1,2列作排序的情况。
function sortFunction(array) ...{ 
return array.sort( function(x, y) ...{ 
return (x[0]==y[0])?(x.localeCompare(y)):(x[0].localeCompare(y[0])) 
}); 
}

因此arrayObject.sort( sortFunction )的排序功能还是很强大的,终于能够实现了SQL语句中的ORDER BY 一样的功能。
Javascript 相关文章推荐
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
Apr 21 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
Feb 26 Javascript
这段js代码得节约你多少时间
Dec 20 Javascript
用JS将搜索的关键字高亮显示实现代码
Nov 08 Javascript
WEB前端设计师常用工具集锦
Dec 09 Javascript
Jquery实现鼠标移动放大图片功能实例
Mar 25 Javascript
jQuery使用ajax跨域获取数据的简单实例
May 18 Javascript
原生JS实现-星级评分系统的简单实例
Aug 21 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
Aug 25 Javascript
利用Jquery队列实现根据输入数量显示的动画
Sep 01 Javascript
浅谈Javascript中的对象和继承
Apr 19 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
Jan 14 Javascript
用Javascript数组处理多个字符串的连接问题
Aug 20 #Javascript
JQUERY 浏览器判断实现函数
Aug 20 #Javascript
google地图的路线实现代码
Aug 20 #Javascript
JavaScript 字符串乘法
Aug 20 #Javascript
javascript 短路法代码精简
Aug 20 #Javascript
斜45度寻路实现函数
Aug 20 #Javascript
javascript 多级checkbox选择效果
Aug 20 #Javascript
You might like
德生PL660的电路分析和打磨
2021/03/02 无线电
适用于php-5.2 的 php.ini 中文版[金步国翻译]
2011/04/17 PHP
PHP序列号生成函数和字符串替换函数代码
2012/06/07 PHP
PHP弱类型的安全问题详细总结
2016/09/25 PHP
php5.3后静态绑定用法详解
2016/11/11 PHP
PHP实现的XML操作类【XML Library】
2016/12/29 PHP
php 数组元素快速去重
2017/05/05 PHP
JavaScript 参考教程
2006/12/29 Javascript
用js判断浏览器是否是IE的比较好的办法
2007/05/08 Javascript
js和jquery批量绑定事件传参数一(新猪猪原创)
2010/06/23 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
javascript的push使用指南
2014/12/05 Javascript
jquery插件orbit.js实现图片折叠轮换特效
2015/04/14 Javascript
js实现网页收藏功能
2015/12/17 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
webpack打包nodejs项目的方法
2018/09/26 NodeJs
记一次vue-webpack项目优化实践详解
2019/02/17 Javascript
React冒泡和阻止冒泡的应用详解
2020/08/18 Javascript
[02:07]DOTA2新英雄展现中国元素,完美“圣典”亮相央视
2016/12/19 DOTA
介绍Python中内置的itertools模块
2015/04/29 Python
Python实现对百度云的文件上传(实例讲解)
2017/10/21 Python
基于DataFrame改变列类型的方法
2018/07/25 Python
Python反射和内置方法重写操作详解
2018/08/27 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
浅谈Django前端后端值传递问题
2020/07/15 Python
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
巴塞罗那观光通票:Barcelona Pass
2019/10/30 全球购物
Java里面如何创建一个内部类的实例
2015/01/19 面试题
车祸赔偿收入证明
2014/01/09 职场文书
《青海高原一株柳》教学反思
2014/04/25 职场文书
2016年小学生寒假总结
2015/10/10 职场文书
小学五年级(说明文3篇)
2019/08/13 职场文书
使用MybatisPlus打印sql语句
2022/04/22 SQL Server
Springboot集成kafka高级应用实战分享
2022/08/14 Java/Android