在數值的部份我就有點納悶
[1, 6, 4, 10, 20, 2]
這幾個數字由小排到大居然會是
[1, 10, 2, 20, 4, 6]
猜想應該是統一使用 toString() 採 ascii 碼來排序
這個時候就要自訂如何去排序啦
根據 w3c 的文件
Array.sort() 內可以傳入一個函數
參數值會有 a跟b 兩個
而sort函數會依照傳入的函數所回傳的結果來決定a 與 b 是否要交換位置
先看我改後的js (ascending):
var myArr = new Array(1, 6, 4, 10, 20, 2); myArr.sort(function (A, B) { return A - B; }); console.log(myArr); //[1, 2, 4, 6, 10, 20]
依據回傳結果
小於0的話A在前面
等於0的話不變
大於0的話A在後面
如果是要由大排到小的話 (descending)
就改為:
myArr.sort(function (A, B) { return B - A; });
沒有留言:
張貼留言