1、reverse()方法:反轉數組;
2、sort()方法:升序排列數組項;
var values_1 = [1, 2, 3, 4, 5]; values_1.reverse(); //reverse()反轉數組項的順序 console.log("reverse()反轉后:" + values_1); //5,4,3,2,1 var values_2 = [0, 1, 5, 10, 15]; values_2.sort(); //升序排列數組 console.log("sort()排序后:" + values_2); //0,1,10,15,5 ??Why /* * PS:sort()方法會調用每個數組項的toString()轉型方法 * 所以 引擎把數組的每一項當做一個字符串,先比較每個字符串的第一個字符,按照B>A,3>1這種方式排。如果第一個字符一樣,就比較第二個,以此類推。 * 例子中的五個數首字母分別是"0","1","5","1","1": * 0自然排第一個,5排最后一個。 * 然后就是1,10和15了。1的第二位沒有字符,10的第二位是0, 15的第二位是5。 * 所以排序結果為0,1,10,15,5 */
所以,sort()方法可以接收一個比較函數作為參數,以便我們指定哪個值位於哪個值的前面。
比較函數接收兩個參數。如果第一個參數應該位於第二個之前則返回一個附屬,如果兩個參數相等,則返回0;如果第一個參數應該位於第二個之后,則返回一個正數。以下就是一個簡單的比較函數:
//升序比較函數 function compare(value1, value2){ if (value1 < value2) { return -1; }else if (value1 > value2) { return 1; }else{ return 0; } }
這個比較函數可以適用於大多數數據類型,只要將其作為參數傳遞給sort()方法即可,如下面這個例子所示:
var values = [0, 1, 15, 10, 5]; values.sort(compare); console.log("加了升序比較函數的sort()結果:" + values); //0, 1, 5, 10, 15
在將比較函數傳遞到sort()方法后,數據仍然保持了正確的升序。當然,也可以通過比較函數產生降序的結果,只要交換比較函數返回的值即可。
//降序比較函數 function compare(value1, value2){ if (value1 < value2) { return 1; }else if (value1 > value2) { return -1; }else{ return 0; } }
var values = [0, 1, 15, 10, 5]; values.sort(compare); console.log("加了降序比較函數的sort()結果:" + values); //15,10,5,1,0
對於數值類型或者其valueOf()方法會返回數值類型的對象類型,可以使用一個更簡單的比較函數。這個函數只要用第二個值減第一個值即可。
function compare(value1, value2){ return value2 - value1; }
由於比較函數通過返回一個小於零、等於零或大於零的值來影響排序結果,因此減法操作就可以適當地處理所有這些情況。