Я не думаю (надеюсь), что это еще один из тех тысяч банальных вопросов Array.sort (в основном неправильные типы данных).
Итак, я пытаюсь сделать следующее:
[1, 3, 2, 7, 9, 4].sort((a, b) => a % 2 === 0 && b % 2 === 0 ? b - a : a - b)
, то есть пары четных чисел должны быть упорядочены в порядке убывания, остальные в порядке возрастания, как обычно.
Что я получаю, это
[1, 2, 3, 4, 7, 9]
, что не удивительно, поскольку сравниваются только эти пары:
[1, 3]
[3, 2]
[1, 2]
[3, 7]
[7, 9]
[9, 4]
[7, 4]
[3, 4]
Таким образом, 2 и 4 никогда не сравниваются друг с другом. Таким образом, только одно из моих правил сравнения фактически соблюдается в результате. Чего мне не хватает?
Вот результат, который я ожидаю:
[1, 3, 4, 7, 9, 2]