Array的Sort真的很有趣
有時候可省去很多工
我應該要好好學習!
var _array = [1111, 0, 33, 2]; _array.sort(); //_array = [0, 1111, 2, 33];
看起來應該都是用字串(lexicographical order)
由小到大排序,0->9 A-> Z
如果要反轉,就用reverse()
var _array = [1111, 0, 33, 2]; _array.sort(); _array.reverse(); //_array = [33, 2, 1111, 0];
如果要特殊排序,sort可以丟function參數
array.sort(sortfunction);
function sortfunction(a, b){
//Compare "a" and "b" in some fashion, and return -1, 0, or 1
//小於0:不變,"a"索引值應該要小於"b"
//等於0:不變,"a"索引值"b"不變,不sorting
//大於0:交換,"b"索引值應該要小於"a"
}
所以當你想要以數字進行排序,可以使用上面的原則
var _array = [1111, 2, 333, 0];
_array.sort(function(a,b){
return a - b;
});
倒序的話可以改成return b - a;
或是
_array.reverse();
最後,今天最大的學習,若你想要random陣列
var _array = [1111, 2, "SIMON", "AMY", 333, "SAY", 0];
_array.sort(function(a,b){
//介於-0.5~0.5中間
return 0.5 - Math.random();
});
//_array = ["SIMON", 1111, 2, "SAY", "AMY", 333, 0]
他真的很方便,如果array索引是物件
在sortfunction裡面,你可以用
return a.property - b.property;
去做比較!不用太可惜了啦!
參考:
http://hungred.com/how-to/tutorial-sort-array-javascript/
http://www.javascriptkit.com/javatutors/arraysort.shtml