JavaScript Array sort 方法
Array 对象的 sort 方法用于对数组的元素进行排序。语法如下:
array_object.sort( sortby )
参数 | 说明 |
---|---|
array_object | 要操作的数组(对象) |
sortby | 可选。规定排序顺序的函数。 |
注意:sort 方法会直接在原数组上进行排序而不会生成副本。
说明
如果省略 sortby 参数,非字符串元素将被转换为字符串,然后按照字符编码的顺序进行升序排序;如果提供了排序函数,该函数接受两个元素参数,分别代表排序比较时的两个元素。如果函数返回值大于 0 ,就将两个元素位置进行交换,反之则不交换,具体可参见例子3。
sort 方法实例
例子 1
下面是省略 sortby 参数的例子,元素包含了数字,字符,布尔等数据类型。
<script language="JavaScript"> var array_1 = new Array('abc','xyz',234,true,'123a','字符'); array_1.sort(); document.write( array_1 ); </script>
运行该例子,输出:
123a,234,abc,true,xyz,字符
注意:在原数组中,有元素是布尔值 true ,经过排序后该值仍然是布尔值,只是在排序时,按照字符串 'true' 来比较。
例子 2
下面是省略 sortby 参数,但元素是纯数字时的排序例子:
<script language="JavaScript"> var array_1 = new Array(10,5,1000,21,1); array_1.sort(); document.write( array_1 ); </script>
运行该例子,输出:
1,10,1000,21,5
可见默认情况下,对数字排序并没有按照由小到大顺序来排序(实际是按照字符编码来排序)。要想按照大小顺序来排序,必须使用 sortby 参数,参见下面的例子。
例子 3
下面的例子使用 sortby 参数,将数字由小到大进行排序:
<script language="JavaScript"> function asc( x,y ) { return x - y; } var array_1 = new Array(10,5,1000,21,1); array_1.sort( asc ); document.write( array_1 ); </script>
运行该例子,输出:
1,5,10,21,1000
可见在经过多次比较之后,数字小的元素就被排到前面去了。
例子 4
下面的例子使用 sortby 参数,将奇数排在前面:
<script language="JavaScript"> function odd ( x,y ) { if( x % 2 ==0 ){ return 1; } else { return -1; } } var array_1 = new Array(10,5,1000,21,1); array_1.sort( odd ); document.write( array_1 ); </script>
运行该例子,输出:
5,1,21,10,1000
参考阅读
- JavaScript Array reverse 方法:颠倒数组中元素的顺序