Сортування масиву чисел
Помилка новачків:
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(...) | новий відсортований масив |
Підсумок: Щоб відсортувати числа за зростанням - завжди передавай функцію порівняння:
javascriptarr.sort((a, b) => a - b);
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.