По умолчанию Array.prototype.sort() преобразует все элементы в строки и сортирует их лексикографически (в алфавитном порядке). С числами это даёт неожиданные результаты:
[10, 2, 1].sort(); // → [1, 10, 2]
"10" идёт перед "2", потому что "1" алфавитно меньше, чем "2".
Чтобы правильно отсортировать числа, передай функцию-компаратор, которая возвращает отрицательное, нулевое или положительное значение:
arr.sort((a, b) => a - b); // → [1, 2, 10]
arr.sort((a, b) => b - a); // → [10, 2, 1]
Компаратор говорит sort(), как сравнивать два элемента:
a идёт первымb идёт первымsort() изменяет исходный массив на месте. Если нужно сохранить оригинал, сначала создай копию:
const sorted = [...arr].sort((a, b) => a - b);
По умолчанию Array.prototype.sort() преобразует все элементы в строки и сравнивает их лексикографически, что может привести к неправильным результатам при сортировке числовых массивов.
Новый — ещё не проверен сообществом
Вы