Вебсправочник
Справочник JavaScript

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 в песочнице этого сайта не выполняется. Перенесите пример в отдельный учебный файл. Сначала проверьте исходный результат, затем измените входные данные; ошибка проверки означает, что результат отличается от ожидаемого.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.