1. 程式人生 > >對於js陣列排序的問題 arr.sort()

對於js陣列排序的問題 arr.sort()

一般陣列排序用的都是

arrayObject.sort(sortby)

但是往往會發現,對於陣列中的元素是數字的情況下,實現不了排序,會將數字看成字元進行計算,以至於出現以數字首位為規則進行排序,以至於出現0,11,13,2,29,3,8的類似情況

要解決這種情況,需要另外新增一個函式

function sortNumber(a,b)
{
return a - b
}

var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"

document.write(arr + "<br />")
document.write(arr.sort(sortNumber)
)

結果如下所示:

10,5,40,25,1000,1
1,5,10,25,40,1000
這樣才能達到排序效果
function sortNumber(a,b)
{
return a - b
}

這個就是自定義的陣列的排序方法,在呼叫array.sort()的時候,當作sort的引數傳入進去. 
這個方法需要有兩個引數,用來接受陣列相鄰的兩個元素,在方法裡面按照一定的條件來比較這兩個相鄰的元素,來確定這兩個元素是否需要互換位置

至於要想實現逆序問題,直接sort(sortNumber)即可

對應的sortNumber()修改成 

function sortNumber(a,b)
{
return b-a
}
實現逆序功能