Skip to main content

Сортування масиву чисел

Помилка новачків:

javascript
const numbers = [10, 1, 3, 20]; numbers.sort(); console.log(numbers); // ["1", "10", "20", "3"] - рядкова сортування

За умовчанням sort() приводить елементи до рядків і сортує в лексикографічному порядку ("10" йде перед "2").


Правильний спосіб - з функцією порівняння:

javascript
const numbers = [10, 1, 3, 20]; numbers.sort((a, b) => a - b); console.log(numbers); // [1, 3, 10, 20]
  • Функція (a, b) => a - b повідомляє, як порівнювати числа:
    • якщо a - b < 0 -> a йде раніше
    • якщо a - b > 0 -> b йде раніше
    • якщо a - b = 0 -> порядок не змінюється

Сортування за спаданням:

javascript
numbers.sort((a, b) => b - a); console.log(numbers); // [20, 10, 3, 1]

Якщо хочеш не мутувати вихідний масив:

javascript
const arr = [5, 2, 9, 1]; const sorted = [...arr].sort((a, b) => a - b); console.log(sorted); // [1, 2, 5, 9] console.log(arr); // [5, 2, 9, 1] (вихідний не змінений)

Коротко:

ЗадачаКодРезультат
За зростаннямarr.sort((a, b) => a - b)[1, 2, 3, 4]
За спаданнямarr.sort((a, b) => b - a)[4, 3, 2, 1]
Без зміни вихідного масиву[...arr].sort(...)новий відсортований масив

Підсумок: Щоб відсортувати числа за зростанням - завжди передавай функцію порівняння:

javascript
arr.sort((a, b) => a - b);

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.