JavaScript列表排序
在前端開發中,經常需要對列表進行排序。JavaScript提供了多種列表排序方法,可以根據不同需求來選擇不同的方法。
sort方法
sort方法是JS數組自帶的一種排序方法。它對數組的每個元素進行排序,如果不定義比較函數,使用默認的ASCII字符順序進行排序。事實上,在數組中,sort方法通過比較字符串進行排序。比如,當一個數組包含2和10時,sort方法默認會把10排在2前面。
下面是一個JS數組sort方法的示例:
```javascript
var ary = new Array("1", "11", "——", "2", "22");
console.log(ary.sort()); // 結果 ["——", "1", "11", "2", "22"]
```
這個示例中,sort方法對ary數組進行排序,默認是按照之前提到的ASCII字符順序進行排序。'——'排在數字字符前面,1、11、2、22按照字典序排序。
為了讓sort方法按照數字的大小進行排序,需要自定義一個比較函數。比較函數需要接收兩個參數 a 和 b(表示被比較的元素),如果a小于b,返回負整數;如果a等于b,返回0;如果a大于b,返回正整數。按照這個規則可以實現數字的大小比較。
下面是一個按照數字大小排序的示例:
```javascript
var ary = new Array(1, 11, 6, 5, 2);
console.log(ary.sort(function(a, b){return a-b})); // 結果 [1, 2, 5, 6, 11]
```
這個示例中,使用函數(function(a, b){return a-b})作為sort方法的參數,表示a比b小或等于-1。因此,sort方法根據數字大小來排序。
sort方法也可以按照字符串大小來排序。下面是一個按照字符串大小排序的示例:
```javascript
var ary = new Array("ab", "aa", "bc", "cc", "ca");
console.log(ary.sort(function(a, b){return a.localeCompare(b)})); // 結果 ["aa", "ab", "bc", "ca", "cc"]
```
這個示例中,使用a.localeCompare(b)函數作為sort方法的參數,表示如果a小于b,返回負整數;如果a等于b,返回0;如果a大于b,返回正整數。因此,sort方法按照字符串大小進行排序。
reverse方法
reverse方法是另外一個JS數組自帶的排序方法。它將數組的元素在原地按相反的順序進行排序。例如:
```javascript
var ary = new Array(1, 2, 3, 4, 5);
console.log(ary.reverse()); // 結果 [5, 4, 3, 2, 1]
```
這個示例中,reverse方法將數組元素顛倒。
concat方法
concat方法是將一個或多個數組元素合并成一個新的數組。例如:
```javascript
var ary1 = new Array(1, 2, 3);
var ary2 = new Array(4, 5, 6);
console.log(ary1.concat(ary2)); // 結果 [1, 2, 3, 4, 5, 6]
```
這個示例中,concat方法將兩個數組合并成一個新的數組。
map方法
map方法可以創建一個新的數組,其中每個元素的值為原數組對應元素執行的函數的返回值。例如:
```javascript
var ary = new Array(1, 2, 3);
console.log(ary.map(function(a){return a*2})); // 結果 [2, 4, 6]
```
這個示例中,map方法返回一個新數組,其中每個元素都是原數組中對應元素的兩倍。
以上是JS列表排序方法的一些示例。在使用時,我們需要根據實際情況選擇不同的方法,以獲得最優的排序結果。
下一篇java的好處和壞處