当前位置: 首页 > 图文教程 > 网络编程 > Javascript > javascript 数组排序函数

Javascript
jquery中常用的SET和GET
解javascript 混淆加密收藏
JavaScript 在线压缩和格式化收藏
JavaScript URL参数读取改进版
javascript打开新窗口同时关闭旧窗口
借用Google的Javascript API Loader来加速你的网站
javascript Xml增删改查(IE下)操作实现代码
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
最近项目写了一些js,水平有待提高
JavaScript库 开发规则
JavaScript入门教程(1) 什么是JS
JavaScript入门教程(2) JS基础知识
JavaScript入门教程(3) js面向对象
JavaScript入门教程(4) js浏览器对象
JavaScript入门教程(5) js Screen屏幕对象
JavaScript入门教程(7) History历史对象
JavaScript入门教程(8) Location地址对象
JavaScript入门教程(9) Document文档对象
JavaScript入门教程(11) js事件处理
JavaScript入门教程(12) js对象化编程

Javascript 中的 javascript 数组排序函数


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 348 ::
收藏到网摘: n/a

javascript的数组排序函数 sort方法,默认是按照ASCII 字符顺序进行升序排列。 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 一样的功能。