sortNumber函數排序詳解

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 的值。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章