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 相关文章推荐
自写的一个jQuery圆角插件
Oct 26 Javascript
新鲜出炉的js tips提示效果
Apr 03 Javascript
js中数组(Array)的排序(sort)注意事项说明
Jan 24 Javascript
jQuery实现手机版页面翻页效果的简单实例
Oct 05 Javascript
php简单数据库操作类的封装
Jun 08 Javascript
详细分析单线程JS执行问题
Nov 22 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
Sep 02 Javascript
在create-react-app中使用sass的方法示例
Oct 01 Javascript
代码实例ajax实现点击加载更多数据图片
Oct 12 Javascript
js实现弹出框的拖拽效果实例代码详解
Apr 16 Javascript
深入解读Node.js中的koa源码
Jun 17 Javascript
layui table 表格上添加日期控件的两种方法
Sep 28 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
php中通过curl smtp发送邮件
2012/06/05 PHP
解析php时间戳与日期的转换
2013/06/06 PHP
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
php redis实现对200w用户的即时推送
2017/03/04 PHP
得到jQuery detach()后节点中的某个值实现代码
2013/02/05 Javascript
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
2013/06/05 Javascript
jquery DIV撑大让滚动条滚到最底部代码
2013/06/06 Javascript
jquery1.10给新增元素绑定事件的方法
2014/03/06 Javascript
easyui datagrid 键盘上下控制选中行示例
2014/03/31 Javascript
jquery实现倒计时代码分享
2014/06/13 Javascript
node.js超时timeout详解
2014/11/26 Javascript
express的中间件cookieParser详解
2014/12/04 Javascript
JS基于面向对象实现的放烟花效果
2015/05/07 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
2016/01/26 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
如何判断出一个js对象是否一个dom对象
2016/11/24 Javascript
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
2017/01/05 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
BootStrap中的Fontawesome 图标
2017/05/25 Javascript
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
微信小程序radio组件使用详解
2018/01/31 Javascript
VUE Error: getaddrinfo ENOTFOUND localhost
2018/05/03 Javascript
常用python数据类型转换函数总结
2014/03/11 Python
python操作xml文件示例
2014/04/07 Python
Python中的id()函数指的什么
2017/10/17 Python
python实现感知器
2017/12/19 Python
python paramiko利用sftp上传目录到远程的实例
2019/01/03 Python
python双向链表原理与实现方法详解
2019/12/03 Python
《都江堰》教学反思
2014/02/07 职场文书
学生生病请假条范文
2014/02/16 职场文书
舞蹈教育学专业自荐信
2014/06/15 职场文书
支部书记四风对照材料
2014/08/28 职场文书
2014年党员发展工作总结
2014/12/02 职场文书
检讨书范文大全
2015/05/07 职场文书
学习十八大的感悟
2015/08/11 职场文书