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

Posted nini-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript:数组的sort()排序(遇到负数时如何处理)相关的知识,希望对你有一定的参考价值。

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的值。

 

自己编写JavaScript的sort函数

  在平常开发中我们经常会遇到对数组进行排序的场景,js给我们提供了sort方法可以对数组元素进行排序,默认是按ASCII字母表顺序排序,请看下面例子:

var a = [1, 3, 2, 4];
var b = [‘b‘, ‘a‘, ‘c‘, ‘d‘]; a.sort();
b.sort(); console.log(a);
// [1, 2, 3, 4]
console.log(b); // [‘a‘, ‘b‘, ‘c‘, ‘d‘]

  但有些时候我们需要自己定义排序要求,这时候我们就可以给sort函数传递一个函数,用来自定义排序规则,请看下面例子:

var a = [1, 3, 2, 4];

a.sort(function compare(a, b) {
   return b - a;
});
console.log(a);  // [4, 3, 2, 1]

  这是一个简单的自定义例子,把数组进行了降序排序,对于传给sort方法的函数function compare(a,b){...} ,遵循这样一个规则:若返回正数,则说明a和b需要交换,否则不交换。基于这个准则我们就可以根据自己需求来确定交不交换。请看下面代码:

function compare(a, b) {
    if () {       //如果不想交换,则返回-1
        return -1;
    }
    return 1;  //返回1表示想交换
}

  这样的话a和b交换还是不交换完全取决于你自己的逻辑。  你说了算嘻嘻!!

  如果有什么不正确的地方,还请各位大腿指正!!!!

 





以上是关于JavaScript:数组的sort()排序(遇到负数时如何处理)的主要内容,如果未能解决你的问题,请参考以下文章

自己编写JavaScript的sort函数

javascript中的数组排序——sort()方法

javascript深度理解数组的sort()排序

JavaScript中数组Array.sort()排序方法详解

JavaScript数组sort()方法小结

javascript 数组排序sort方法和自我实现排序方法的学习小结 by FungLeo