JavaScript升序排序出现异常

JavaScript Ascending Number Sort With an Exception

本文关键字:异常 排序 升序 JavaScript      更新时间:2023-09-26

我在JavaScript中定义了以下数组,

var myPriceList = [0, 0, 0, 1, 5, 3]

我需要按升序对数字进行排序,这样0就会显示在排序的末尾,就像这样-

var myPriceList = [1, 3, 5, 0, 0, 0]

我知道我可以写一个像下面这样的自定义函数,但我不知道如何合并"0"的异常。

function sortNumber(a,b)
{
  return b - a;
}

function numSort(a,b){
    if(a == 0)
        return 1;
    if(b == 0)
        return -1;
    return a - b;
}

如果numSort(a,b)返回值>0,则a的索引应该更高(因此在序列中更晚)。如果值是<0,则b应该在序列中的后面。0表示二者在项或次序上相等。

JSFiddle演示。另请参见MDN排序参考。

试试这个:

var a = [0, 0, 0, 1, 5, 3];
a.sort();
while(a[0] == 0) a.push(a.shift());
// a is now [1, 3, 5, 0, 0, 0]
var arr = [0, 0, 0, 1, 5, 3];
arr.sort(function(a,b){return a*b==0? 1:a-b});

/*返回值:(数组)1,3,5,0,0*/

function sortNumber(a,b)
{
  if(a == 0) return 1;
  if(b == 0) return -1;
    return b - a;
}