Метод Sort
Часть раздела Логика и поток путешествия по JavaScript на Coddy — урок 57 из 65.
Метод sort() позволяет сортировать элементы массива на месте и возвращает отсортированный массив. По умолчанию он сортирует элементы как строки в алфавитном порядке и по возрастанию.
Вот базовый синтаксис:
array.sort([compareFunction])Пример без использования функции сравнения:
const fruits = ['banana', 'apple', 'orange', 'mango'];
fruits.sort();
console.log(fruits);
// ['apple', 'banana', 'mango', 'orange']ПРЕДУПРЕЖДЕНИЕ: Числа сортируются не так, как ожидается, без функции сравнения:
const numbers = [1, 30, 4, 21, 100000];
numbers.sort();
console.log(numbers);
// [1, 100000, 21, 30, 4] (некорректная числовая сортировка)Чтобы правильно сортировать числа или реализовать пользовательскую сортировку, вам необходимо использовать функцию сравнения.
Функция сравнения должна возвращать:
- Отрицательное значение, если a должно стоять перед b
- Положительное значение, если b должно стоять перед a
- Ноль, если они равны
Вот как можно отсортировать числа с помощью функции сравнения:
// По возрастанию
const numbers = [1, 30, 4, 21, 100000];
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 4, 21, 30, 100000]// Сортировка по убыванию
numbers.sort((a, b) => b - a);
console.log(numbers); // [100000, 30, 21, 4, 1]Ещё один пример того, как сортировать объекты:
const people = [
{ name: 'John', age: 30 },
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 35 }
];
// Сортировка по возрасту (по возрастанию)
people.sort((a, b) => a.age - b.age);// Сортировка по имени (в алфавитном порядке с использованием localeCompare())
people.sort((a, b) => a.name.localeCompare(b.name));Задание
ЛегкоСоздайте функцию с именем sortByLength, которая принимает массив строк и возвращает новый массив с теми же строками, отсортированными по их длине в порядке возрастания. Если две строки имеют одинаковую длину, они должны быть отсортированы в алфавитном порядке.
Шпаргалка
Метод sort() сортирует элементы массива на месте и возвращает отсортированный массив. По умолчанию он сортирует элементы как строки в алфавитном порядке.
Базовый синтаксис:
array.sort([compareFunction])Сортировка строк:
const fruits = ['banana', 'apple', 'orange', 'mango'];
fruits.sort();
console.log(fruits); // ['apple', 'banana', 'mango', 'orange']Внимание: Числа сортируются некорректно без функции сравнения:
const numbers = [1, 30, 4, 21, 100000];
numbers.sort();
console.log(numbers); // [1, 100000, 21, 30, 4] (некорректно)Функция сравнения возвращает:
- Отрицательное значение, если a должно идти перед b
- Положительное значение, если b должно идти перед a
- Ноль, если они равны
Правильная сортировка чисел:
// По возрастанию
numbers.sort((a, b) => a - b);
// По убыванию
numbers.sort((a, b) => b - a);Сортировка объектов:
const people = [
{ name: 'John', age: 30 },
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 35 }
];
// Сортировка по возрасту
people.sort((a, b) => a.age - b.age);
// Сортировка по имени в алфавитном порядке
people.sort((a, b) => a.name.localeCompare(b.name));Попробуйте сами
function sortByLength(arr) {
return arr.sort((a, b) => {
// Напишите код здесь
})
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и поток
1Строки в деталях
Основы работы со строкамиИтерация по строкамШаблонные литералыМетоды строкИтоги — String Weaver4JSON Часть 2
Итерация по JSONВложенный JSONОпциональная цепочка JSONПоверхностное и глубокое копированиеПовторение — Магазин велосипедовПовторение — Солнечная система7Система управления библиотекой
Обзор проектаДобавление книг10Управление системой фестиваля
Обзор проектаДобавление фильмов и площадок2Многомерные массивы
Основы 2D массивовДоступ к элементам 2D массиваВложенные циклы и 2D массивыПовторение: 2D массивыСложение и вычитание матрицСтупенчатые массивы3D массивы и далееРаспространенные паттерны 2D массивовПовторение: всё о массивах5Множества. Часть 1
Что такое множество?Итерация по множествамДобавление элементаУдаление элементаПроверка наличия элементаРазмер и проверка на пустотуКопирование и очисткаИтоги — Основы множеств8Интересные темы о массивах
Деструктуризация массивовСинтаксис Spread в массивахРазреженные массивыИтоги — Воркшоп по массивам3JSON. Часть 1
Что такое JSON?Проверка наличия ключаМетоды объектовОператор spread. Часть 1Оператор spread. Часть 2Удаление ключейПовторение: манипуляции с ключами JSON