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 miniui 教程 表格控件 合并单元格应用
Nov 25 Javascript
JavaScript中双叹号!!作用示例介绍
Sep 21 Javascript
Windows系统下Node.js的简单入门教程
Jun 23 Javascript
jQuery实现鼠标经过事件的延时处理效果
Aug 20 Javascript
js仿小米手机上下滑动效果
Feb 05 Javascript
Vue项目webpack打包部署到服务器的实例详解
Jul 17 Javascript
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
Dec 09 Javascript
ES6学习笔记之map、set与数组、对象的对比
Mar 01 Javascript
Vue利用History记录上一页面的数据方法实例
Nov 02 Javascript
vue实现点击追加选中样式效果
Nov 01 Javascript
vue+canvas实现移动端手写签名
May 21 Javascript
VsCode里的Vue模板的实现
Aug 12 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实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
深入PHP FTP类的详解
2013/06/13 PHP
laravel框架实现去掉URL中index.php的方法
2019/10/12 PHP
Add Formatted Data to a Spreadsheet
2007/06/12 Javascript
getComputedStyle与currentStyle获取样式(style/class)
2013/03/19 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
2014/10/11 Javascript
让JavaScript和其它资源并发下载的方法
2014/10/16 Javascript
Javascript调用函数方法的几种方式介绍
2015/03/20 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
JavaScript生成图形验证码
2020/08/24 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
jquery对table做排序操作的实例演示
2017/08/10 jQuery
js定时器+简单的动画效果实例
2017/11/10 Javascript
解决Angular2 router.navigate刷新页面的问题
2018/08/31 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
jQuery实现简单QQ聊天框
2020/08/27 jQuery
[01:11:15]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
python 性能提升的几种方法
2016/07/15 Python
Python进阶篇之字典操作总结
2016/11/16 Python
python获取代码运行时间的实例代码
2018/06/11 Python
TensorFlow实现iris数据集线性回归
2018/09/07 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
python2与python3爬虫中get与post对比解析
2019/09/18 Python
pytorch查看通道数 维数 尺寸大小方式
2020/05/26 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
Django-silk性能测试工具安装及使用解析
2020/11/28 Python
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
清洁工表扬信
2014/01/08 职场文书
家长对小学生的评语
2014/01/28 职场文书
采购部部长岗位职责
2014/02/06 职场文书
公务员个人年终总结
2015/02/12 职场文书
海洋天堂观后感
2015/06/05 职场文书
爱国主义教育主题班会
2015/08/13 职场文书
纯CSS3实现div按照顺序出入效果
2021/07/15 HTML / CSS
logback如何自定义日志存储
2021/08/30 Java/Android