JS中sort()和reverse()
JS中sort()和reverse()一、JS中sort()
sort()方法按升序排列数组——即最小的值位于最前面,最大的值排在最后面。为了实现排序,sort()方法会调用每个数组项的toString()转型方法,然后比较得到字符串,以确定如何排序。即使数组中的每一项都是数值,sort()方法比较的也是字符串。
sort()语法
arrayObject.sort(sortby)
其中:sortby 可选,用来规定排序顺序,必须是函数
sort()说明
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
1、若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
2、若 a 等于 b,则返回 0。
3、若 a 大于 b,则返回一个大于 0 的值。
sort()实例
1、sort不带比较函数方法
var values = [0,1,5,10,15];
values.sort();
alert(values);
输出结果: 0,1,10,15,5
这种排序方式在很多情况下都不是最佳方案。因此sort()方法可以接受一个比较函数作为参数,以便我们指定那个值位于那个值的前面。
2、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, 2, 5, 10, 15];
values.sort(compare);
alert(values); //0,1,5,10,15
二、JS中reverse()
当我们进行升序排序后,然后数组在调用reverse()方法将数组逆序,这样就可以实现数组的降序排序了。
例如
var values = [0, 1, 2, 5, 10, 15];
values.sort(compare).reverse();
alert(values); //0,1,5,10,15