js中数组有sort()方法可以排序。
比如 var citys=["shanghai","guangzhou","beijing"];
citys.sort();
alert(citys);//
但是如果排序数字数组时就会有问题了。
所以如下的解决方案。
将数组中的元素排序,只需用到sort()方法。sort()方法是在原数组的基础上排序的,会影响原数组中的数据,其语法代码如下所示。 sort() sort(order) //排序数字时,必须调用此方法 其中order参数是一个可选参数,用来指定使用什么方法来对数组中元素进行排序。如果省略order参数,将按字符编码的顺序排序。如果想要将数组中的元素按其它方法排序,就必须要指定order参数。order参数必须是一个函数,该函数应该有两个参数(假设为x,y)。在使用sort()排序时,每次比较两个元素时都会执行比较函数,并将两个元素作为参数传递给比较函数。比较函数有以下两种返回值。 1、如果返回值大于0,则交换两个元素的位置 2、如果返回值小于或等于0,则不进行操作。
下面是一个排序的例子。 <html> <head> <title>数组对象的sort()方法</title> <script language="javascript" type="text/javascript"> <!-- var arr = [39,11,3,9,1,77]; document.write("原数组元素为:" + arr.toString() + "<br>"); arr.sort(); document.write("按字符编码排序:" + arr.toString() + "<br>"); //正序排序 function ascOrder(x,y) { if (x>y) { return 1; } else { return -1; } } //倒序排序 function descOrder(x,y) { if (x>y) { return -1; } else { return 1; } } arr.sort(ascOrder); document.write("按数字正序排序:" + arr.toString() + "<br>"); arr.sort(descOrder); document.write("按数字倒序排序:" + arr.toString() + "<br>"); --> </script> </head> <body> </body> </html>
|