JavaScript:数组的sort()排序(遇到负数时如何处理)

发布时间 2023-04-04 14:00:49作者: nini-

Sort()语法:

/**
* sortFun:可选,设置排序的逻辑,必须是函数
*/
arrayObject.sort(sortFun)

注:在使用sort()函数时,如果不是传函数参数的话,会以默认的方式进行排序,即按照字符编码的顺序进行排序。

例如:

var arr  = [57,34,2,5,7,9,65,857]
console.log(arr.sort());
// 打印结果为[ 2, 34, 5, 57, 65, 7, 857, 9 ]

由此可见按照我们理解的数字大小来看排序就乱了

如何解决呢?

只需要往sort()函数里面传参就可以了,例如:

// 升序
function ascOrder (a, b) {
    return a - b
}
var arr = [3,4,6,76,323,21,35,54];
arr.sort(ascOrder);
// 结果:[ 3, 4, 6, 21, 35, 54, 76, 323 ]

// 降序
function desOrder(a, b) {
    return b - a
}
var arr = [3,4,6,76,323,21,35,54];
arr.sort(desOrder);
// 结果:[ 323, 76, 54, 35, 21, 6, 4, 3]

 在上述代码中,a,b两个参数中若a<b,在排序后的数组中a应当在b之前,返回一个小于0的值;若a=b,则返回0;若a大于b,则返回一个大于0的值。