對於js陣列排序的問題 arr.sort()
阿新 • • 發佈:2019-02-17
一般陣列排序用的都是
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 }