JavaScript 的数组排序
JavaScript的数组中,提供了一个相当实用的方法,用于数组的排序。
这个方法就是 sort()
。调用 sort()
方法之后,数组会根据每一项从小到大排列,看看下面例子:
1 | var arr = [1, 2, 3, 4, 5, 9, 8, 7, 6]; |
得到的结果如下:
1 | [1, 2, 3, 4, 5, 6, 7, 8, 9] |
再看看一个例子:
1 | var arr = [10086, 10010, 28, 56, 3, 31]; |
得到的结果如下:
1 | [10010, 10086, 28, 3, 31, 56] |
上面的结果并没有按照数值的大小,从小到大排列。而是把所有的数字值先转换为字符串,再以字符串进行比较所得到的排序结果。如果需要以数值进行排序,则 sort
方法需要一个传入一个比较函数作为参数,来控制数组的排序方向,例如:
1 | function compareNumber(a, b) { |
得到的结果如下:
1 | [3, 28, 31, 56, 10010, 10086] |
加入了比较函数compareNumber来控制数组的排序之后,可以看到排序结果按照意想中的按数值从小到达进行排列。
如果需要按照数值的大小,从大到小排列呢。以下说明以下比较函数的控制规则:
1 | function compareNumber(a, b) { |
- (1) 如果a应该排在b的前面,返回负数
- (2) 如果a应该排在b的后面,返回正数
- (3) 如果a与b相等,返回0