sort排序
转载自:https://blog.csdn.net/idomyway/article/details/80544509
js中用方法sort()为数组排序。sort()方法有一个可选参数,是用来确定元素顺序的函数。如果这个参数被省略,那么数组中的元素将按照ASCII字符顺序进行排序。
例如:
var arr = ["a", "b", "A", "B"];
arr.sort();
console.log(arr);
因为字母A、B的ASCII值分别为65、66,而a、b的值分别为97、98,所以上面输出的结果是 [“A”, “B”, “a”, “b”] 。
当我们对数字进行排序的时候
var arr = [15, 8, 25, 3];
arr.sort();
console.log(arr);
结果是 [15, 25, 3, 8] 。其实,sort方法会调用每个数组项的toString()方法,得到字符串,然后再对得到的字符串进行排序。虽然数值15比3大,但在进行字符串比较时”1”则排在”3”前面。显然,这种结果不是我们想要的,这时,sort()方法的参数就起到了作用,我们把这个参数叫做比较函数。
对数组数字排序用函数来改变,修改方法如下:
var arr = [23, 9, 4, 78, 3];
var compare = function (x, y) {//比较函数
if (x < y) {
return -1;
} else if (x > y) {
return 1;
} else {
return 0;
}
}
console.log(arr.sort(compare));
结果为 [3, 4, 9, 23, 78] ,返回了我们想要的结果
如果要按降序排序,比较函数写成这样即可:
var compare = function (x, y) {
if (x < y) {
return 1;
} else if (x > y) {
return -1;
} else {
return 0;
}
}
我们还可以对上面的函数进行简化的写法:
var arr = [23, 9, 4, 78, 3];
//升序
arr.sort(function(a,b){
retun a-b;
});
//降序
arr.sort(function(a,b){
retun b-a;
});