sort排序
轉載自:https://blog.csdn.net/idomyway/article/details/80544509
js中用方法sort()為數組排序。sort()方法有一個可選參數,是用來確定元素順序的函數。如果這個參數被省略,那么數組中的元素將按照ASCII字符順序進行排序。
例如:
var arr = ["a", "b", "A", "B"];
arr.sort();
console.log(arr);
因為字母A、B的ASCII值分別為65、66,而a、b的值分別為97、98,所以上面輸出的結果是 [“A”, “B”, “a”, “b”] 。
當我們對數字進行排序的時候
var arr = [15, 8, 25, 3];
arr.sort();
console.log(arr);
結果是 [15, 25, 3, 8] 。其實,sort方法會調用每個數組項的toString()方法,得到字符串,然后再對得到的字符串進行排序。雖然數值15比3大,但在進行字符串比較時”1”則排在”3”前面。顯然,這種結果不是我們想要的,這時,sort()方法的參數就起到了作用,我們把這個參數叫做比較函數。
對數組數字排序用函數來改變,修改方法如下:
var arr = [23, 9, 4, 78, 3];
var compare = function (x, y) {//比較函數
if (x < y) {
return -1;
} else if (x > y) {
return 1;
} else {
return 0;
}
}
console.log(arr.sort(compare));
結果為 [3, 4, 9, 23, 78] ,返回了我們想要的結果
如果要按降序排序,比較函數寫成這樣即可:
var compare = function (x, y) {
if (x < y) {
return 1;
} else if (x > y) {
return -1;
} else {
return 0;
}
}
我們還可以對上面的函數進行簡化的寫法:
var arr = [23, 9, 4, 78, 3];
//升序
arr.sort(function(a,b){
retun a-b;
});
//降序
arr.sort(function(a,b){
retun b-a;
});
