JavaScript Ascending Number按异常排序

时间:2012-02-15 13:08:47

标签: javascript sorting

我在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;
}

4 个答案:

答案 0 :(得分:4)

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 Demo。另请参阅MDN sort reference

答案 1 :(得分:0)

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

答案 2 :(得分:0)

试试这个:

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]

答案 3 :(得分: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,0 * /