Сортировать номера в порядке возрастания, кроме определенного номера

1

Как я могу отсортировать массив чисел в восходящем порядке, кроме 0 (который должен пройти наконец). пример

[1,4,6,3,0,3,0,1] => [1,1,3,3,4,6,0,0]

Я пробовал arr.sort((a,b)=>a>b && a!=0) но не работает

Теги:

2 ответа

7
Лучший ответ

Попробуйте выполнить сортировку по разности между a === 0 и b === 0 (принуждение логических чисел к числам) или если нет разницы, то сортировка по a - b:

const arr = [1,4,6,3,0,3,0,1]
arr.sort((a,b) => ((a === 0) - (b === 0)) || a - b)
console.log(arr);
5

Функция сравнения должна возвращать число, а не true/false.

Проверьте, что первый номер равен 0. Если это так, верните 1 или -1 зависимости от того, является ли это первым или вторым аргументом.

В противном случае верните нормальное значение сравнения.

const arr = [1, 4, 6, 3, 0, 3, 0, 1];

arr.sort((a, b) => {
  if (a == 0) {
    return 1;
  }
  if (b == 0) {
    return -1;
  }
  return a - b;
});

console.log(arr);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню