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的滚动新闻列表
Jun 19 Javascript
分享27个jQuery 表单插件集合推荐
Apr 25 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
Apr 01 Javascript
jquery实现上下左右滑动的方法
Feb 09 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
Jan 03 Javascript
自动完成的搜索框javascript实现
Feb 26 Javascript
浅析JavaScript函数的调用模式
Aug 10 Javascript
详解Node.js串行化流程控制
May 04 Javascript
Angular.js中window.onload(),$(document).ready()的写法浅析
Sep 28 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
Jun 14 Javascript
Node 搭建一个静态资源服务器的实现
May 20 Javascript
js实现图片上传即时显示效果
Sep 30 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
dede3.1分页文字采集过滤规则详说(图文教程)
2007/04/03 PHP
php 高效率写法 推荐
2010/02/21 PHP
php将fileterms函数返回的结果变成可读的形式
2011/04/21 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
2016/03/01 PHP
PHP小偷程序的设计与实现方法详解
2016/10/15 PHP
PHP简单读取xml文件的方法示例
2017/04/20 PHP
PHP中的自动加载操作实现方法详解
2019/08/06 PHP
字符串的replace方法应用浅析
2011/12/06 Javascript
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
2011/12/20 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
JS实现获取当前URL和来源URL的方法
2016/08/24 Javascript
NodeJS整合银联网关支付(DEMO)
2016/11/09 NodeJs
深入解析Vue 组件命名那些事
2017/07/18 Javascript
php register_shutdown_function函数详解
2017/07/23 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
JS实现HTML页面中动态显示当前时间完整示例
2018/07/30 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
2018/12/06 Javascript
详解vue引入子组件方法
2019/02/12 Javascript
[03:00]2018完美盛典_最佳英雄奖
2018/12/17 DOTA
[01:04:49]KG vs LGD 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python实现模拟登录及表单提交的方法
2015/07/25 Python
利用标准库fractions模块让Python支持分数类型的方法详解
2017/08/11 Python
python书籍信息爬虫实例
2018/03/19 Python
对python自动生成接口测试的示例讲解
2018/11/30 Python
python发送多人邮件没有展示收件人问题的解决方法
2019/06/21 Python
Python使用进程Process模块管理资源
2020/03/05 Python
python re的findall和finditer的区别详解
2020/11/15 Python
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
全球异乡人的跨境社交电商平台:Kouhigh口嗨网
2020/07/24 全球购物
opencv实现图像平移效果
2021/03/24 Python
银行类自荐信
2014/02/04 职场文书
会计实训报告范文
2014/11/04 职场文书
工厂采购员岗位职责
2015/04/07 职场文书
Java中CyclicBarrier和CountDownLatch的用法与区别
2021/08/23 Java/Android
MySQL Server层四个日志的实现
2022/03/31 MySQL