咱們知道當涉及到數據結構和算法時,必然會想到或用到排序。下面咱們看一下,JS數組中提供的幾種重排序方法。javascript
反轉數組元素的順序,並返回修改後的數組。java
var arr = [2,4,2,7,9,3,23,15];
arr.reverse();
console.log(arr); // [15,23,3,9,7,2,4,2]
複製代碼
按照升序排列數組元素,即從小到大進行排序,並返回修改後的數組。git
注意:sort方法會調用每一個數組元素的toString()方法,而後再比較大小,最後排序。github
var arr = [2,4,2,7,9,3,23,15];
arr.sort();
console.log(arr); // [15, 2, 2, 23, 3, 4, 7, 9]
複製代碼
var arr = ["c", "a", "b"];
arr.sort();
console.log(arr); // ["a", "b", "c"]
複製代碼
咱們知道sort()方法能夠實現升序排列,那麼降序排列怎麼辦呢?算法
sort()方法接收一個比較函數做爲參數,這樣就能指定順序。數組
接收兩個參數,若是第一個參數應該位於第二個參數以前則返回一個負數,若是兩個參數相等則返回0,若是第一個參數應該位於第二個參數以後則返回一個正數。數據結構
function compareUp(val1, val2) {
if(val1 < val2) {
return -1;
}else if(val1 > val2) {
return 1;
}else {
return 0;
}
}
var arr = [2,4,2,7,9,3,23,15];
arr.sort(compareUp);
console.log(arr); // [2, 2, 3, 4, 7, 9, 15, 23]
複製代碼
接收兩個參數,若是第一個參數應該位於第二個參數以前則返回一個正數,若是兩個參數相等則返回0,若是第一個參數應該位於第二個參數以後則返回一個負數。數據結構和算法
function compareDown(val1, val2) {
if(val1 < val2) {
return 1;
}else if(val1 > val2) {
return -1;
}else {
return 0;
}
}
var arr2 = [2,4,2,7,9,3,23,15];
arr2.sort(compareDown);
console.log(arr2); // [23, 15, 9, 7, 4, 3, 2, 2]
複製代碼
對於數值類型或者其valueOf()方法會返回數值類型的對象類型,能夠用更簡單的比較函數。只要這個函數的第二個值減去第一個值便可。函數
function commonUp2(val1, val2) {
return val1 - val2;
}
var arr3 = [2,4,2,7,9,3,23,15];
arr3.sort(commonUp2);
console.log(arr3); // [2, 2, 3, 4, 7, 9, 15, 23]
function commonDown2(val1, val2) {
return val2 - val1;
}
var arr4 = [2,4,2,7,9,3,23,15];
arr4.sort(commonDown2);
console.log(arr4); // [23, 15, 9, 7, 4, 3, 2, 2]
複製代碼