@Artem0071
Безработный mr. Junior

Почему разная сортировка в JS?

Есть массив где числа - это числа:
const str = ['A', 'C', 'B', 10, 1, 'E', 3, 'D', 5, 2, 4]

И сортировка:
str.sort((a, b) => a > b ? 1 : -1)

И есть массив где числа - это строки:
const str1 = ['A', 'C', 'B', '10', '1', 'E', '3', 'D', '5', '2', '4']

И сортировка:
str1.map(a => Number.isInteger(+a) ? +a : a).sort((a, b) => a > b ? 1 : -1)

При этом в первом варианте у нас сначала цифры потом буквы, во втором сначала буквы и потом цифры
Думал что это изза того что делается +a и там какой то другой тип, но +'1' === 1
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 1
Lynn
@Lynn
nginx, js, css
Потому что у вас нестабильная сортировка
> (1>'A')
false
> ('A'>1)
false


Или вот
> str.sort((a, b) => a > b ? 1 : -1)
[
  'A', 'B', 'C', 'D', 'E',
  1,   2,   3,   4,   5,
  10
]
> str.sort((a, b) => a > b ? 1 : -1)
[
  1,   2,   3,   4,   5,
  10,  'A', 'B', 'C', 'D',
  'E'
]
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы