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列表排序方法的一些示例。在使用时,我们需要根据实际情况选择不同的方法,以获得最优的排序结果。