JS實現多維數組和對象數組排序,用的其實就是原生sort()函數,語法為:arrayObject.sort(sortby)(sortby 可選。規定排序順序。必須是函數。)
返回值為對數組的引用;請注意,數組在原數組上進行排序,不生成副本。
如果調用該方法時沒有使用參數,將按字母順序對數組中的元素進行排序,說得更精確點,是按照字符編碼的順序進行排序。要實現這一點,首先應把數組的元素都轉換成字符串(如有必要),以便進行比較。
eg:
<script type="text/javascript">
var arr = new Array(6)
arr[0] = "a"
arr[1] = "f"
arr[2] = "c"
arr[3] = "e"
arr[4] = "b"
arr[5] = "d"
document.write(arr + "<br />")
document.write(arr.sort())
</script>
輸出:
a,f,c,e,b,d
a,b,c,d,e,f
如果想按照其他標准進行排序,就需要提供比較函數,該函數要比較兩個值,然后返回一個用於說明這兩個值的相對順序的數字。比較函數應該具有兩個參數 a 和 b,其返回值如下:
若 a 小於 b,在排序后的數組中 a 應該出現在 b 之前,則返回一個小於 0 的值。
若 a 等於 b,則返回 0。
若 a 大於 b,則返回一個大於 0 的值。
function NumAscSort(a,b) { return a - b; } function NumDescSort(a,b) { return b - a; } var arr = new Array( 1, 0, 3, 2, 0 ); arr.sort(NumDescSort); alert(arr); arr.sort(NumAscSort); alert(arr);
arr.sort();
alert(arr);
