JavaScript 升序数字排序(有异常)

问题描述 投票:0回答:5

我在 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;
}
javascript sorting
5个回答
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 演示。另请参阅 MDN 排序参考


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]

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 */


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

0
投票
const sortElement = (num) =>{
return  num.sort((a,b)=>a ==0? 1:b==0?-1:a-b)
}
© www.soinside.com 2019 - 2024. All rights reserved.