Array.sort(): числовая сортировка с компаратором
Метод sort сортирует массив на месте, а числам обычно требуется явная функция сравнения.
Назначение
Метод sort сортирует массив на месте, а числам обычно требуется явная функция сравнения.
Как это работает
Без компаратора значения сравниваются как строки, поэтому 10 может оказаться раньше 2. Компаратор a-b задаёт возрастание для обычных чисел; отрицательный результат ставит a раньше b.
Пример
const original=[2,10,1];
const sorted=[...original].sort((a,b)=>a-b);
console.assert(JSON.stringify(sorted)==="[1,2,10]");
console.assert(JSON.stringify(original)==="[2,10,1]");
Что должно получиться
Копия отсортирована по числовому возрастанию, а original сохранён. Спред создаёт новую внешнюю коллекцию перед изменяющим методом sort.
Граница применения и частая ошибка
Не возвращайте из компаратора только true или false. Функция должна задавать согласованный порядок, включая равенство, а не отвечать на один вопрос о паре.
Самостоятельная проверка
Сравните сортировку [2,10,1] с компаратором и без него. Если исходник нужно сохранить, сначала сделайте копию и проверьте оба массива после операции.
JavaScript в песочнице этого сайта не выполняется. Перенесите пример в отдельный учебный файл. Сначала проверьте исходный результат, затем измените входные данные; ошибка проверки означает, что результат отличается от ожидаемого.