Сортировка по возрастанию числа JavaScript с исключением - PullRequest
1 голос
/ 15 февраля 2012

У меня есть следующий массив, определенный в 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 ]

4 голосов
/ 15 февраля 2012

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 .

0 голосов
/ 15 февраля 2012
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 голосов
/ 15 февраля 2012

Попробуйте это:

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 голосов
/ 15 февраля 2012
function sortNumber(a,b)
{
  if(a == 0) return 1;
  if(b == 0) return -1;
    return b - a;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...