JS中有sort方法實現排序,但是單純的用sort方法還不行,實現數值的排序還需要使用一個叫sortNumber函數。
例如:我用sort方法演示一遍它的不足(只列出關鍵代碼):
var arr = new Array(99,66,888,694898,116,46,41);
document.write("排序前:" +arr);
document.write("<br/>")
document.write("排序後:" +arr.sort());
結果:
使用sortNumber方法(只列出關鍵代碼):
function sortNumber(a,b)
{
return a - b;
}
var arr = new Array(99,66,888,694898,116,46,41);
document.write("排序前:" +arr);
document.write("<br/>")
document.write("排序後:" +arr.sort(sortNumber));
結果:
解釋原因:
sort排序方法:
它並沒有按照數值的大小對數字進行排序。
sortNumber排序函數:
如果調用該方法時沒有使用參數,將按字母順序對數組中的元素進行排序,說得更精確點,是按照字符編碼的順序進行排序。
要實現這一點,首先應把數組的元素都轉換成字符串(如有必要),以便進行比較。
如果想按照其他標準進行排序,就需要提供比較函數,該函數要比較兩個值,然後返回一個用於說明這兩個值的相對順序的數字。
比較函數應該具有兩個參數 a 和 b,其返回值如下:
若 a 小於 b,在排序後的數組中 a 應該出現在 b 之前,則返回一個小於 0 的值。
若 a 等於 b,則返回 0。
若 a 大於 b,則返回一個大於 0 的值。