Чтобы правильно отсортировать массив чисел в JavaScript, нужно использовать [sort()] с функцией сравнения. Без функции числа сортируются как строки, что приводит к неправильному результату! 🔢
const numbers = [10, 2, 30, 4];
// ❌ Неправильно — сортирует как строки
console.log(numbers.sort()); // [10, 2, 30, 4] — неправильно!
// ✅ Правильно — с функцией сравнения
console.log(numbers.sort((a, b) => a - b)); // [2, 4, 10, 30]Сортировка чисел в JavaScript — как если бы вам дали коробку с номерами, но они отсортировались по алфавиту вместо порядка! 📦❌
Метод [sort()] по умолчанию сортирует элементы как строки:
const numbers = [10, 2, 30, 4, 100];
// Сортировка без функции
console.log(numbers.sort());
// [10, 100, 2, 30, 4] — неправильно!
// Потому что '10' < '2' в строковом сравненииНужно передать функцию сравнения в [sort()]:
const numbers = [10, 2, 30, 4, 100];
// По возрастанию (меньшее к большему)
console.log(numbers.sort((a, b) => a - b));
// [2, 4, 10, 30, 100] — правильно!
// По убыванию (большее к меньшему)
console.log(numbers.sort((a, b) => b - a));
// [100, 30, 10, 4, 2] — правильно!Функция получает два элемента и должна вернуть:
// Простая функция для чисел
(a, b) => a - b
// Это то же самое, что:
function compare(a, b) {
if (a < b) return -1; // a раньше
if (a > b) return 1; // b раньше
return 0; // равны
}Метод [sort()] изменяет оригинальный массив:
const numbers = [3, 1, 4, 1, 5];
// ❌ Изменяет оригинал
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 1, 3, 4, 5] — оригинал изменился!
// ✅ Сохраняем оригинал
const original = [3, 1, 4, 1, 5];
const sorted = [...original].sort((a, b) => a - b);
console.log(original); // [3, 1, 4, 1, 5] — не изменился
console.log(sorted); // [1, 1, 3, 4, 5] — новая копия// ❌ Неправильно
const nums = [10, 2, 30];
console.log(nums.sort()); // [10, 2, 30] — неправильно!
// ✅ Правильно
console.log(nums.sort((a, b) => a - b)); // [2, 10, 30]// ❌ Ошибка — теряем оригинальный порядок
const scores = [85, 92, 78];
const sorted = scores.sort((a, b) => a - b);
// scores и sorted — один и тот же массив!
// ✅ Правильно — делать копию
const scores2 = [85, 92, 78];
const sorted2 = [...scores2].sort((a, b) => a - b);Правильная сортировка чисел помогает избежать странных ошибок в программах! 💡
Хотите больше статей для подготовки к собеседованиям? Подписывайтесь на EasyAdvice, добавляйте сайт в закладки и совершенствуйтесь каждый день 💪