Как я могу отсортировать массив чисел в восходящем порядке, кроме 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)
но не работает
Попробуйте выполнить сортировку по разности между 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);
Функция сравнения должна возвращать число, а не 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);
a > b && a != 0
является либо истиной, либо ложью, что подразумевает либоa
>b
либоa
=b
соответственно, и никогдаa
<b
. Пожалуйста, прочтите документацию поsort
, особенно о том, как работает возвращаемое значение .