Сортировка массива
Метод sort() сортирует массив по алфавиту:
Пример
Реверсирование массива
Метод reverse() отменяет элементы в массиве.
Его можно использовать для сортировки массива по убыванию:
Пример
Сортировка чисел
По умолчанию функция sort() сортирует значения строк.
Очень хорошо работает для строк ( «Яблоко» раньше будет «Банан» ).
Однако, если числа сортируются как строки, то 25 это больше, чем 100 , потому что 2 это больше, чем 1 .
Поэтому метод sort() при сортировке выдаст неверный результат чисел.
Вы можете исправить, предоставив функцию сравнения:
Пример
Используйте тот же трюк, чтобы отсортировать массив по убыванию:
Пример
Функция сравнения
Функция сравнения предназначена для определения альтернативного порядка сортировки.
Функция сравнения должна возвращать отрицательное, нулевое или положительное значение, в зависимости от аргумента:
Когда функция sort() сравнивает два значения, она отправляет значения сравнить функцию и сортирует значения по возврату (минус, нулевое, положительное) значение.
Пример:
При сравнении 40 и 100 метод sort() вызывает функцию сравнения (40,100).
Функция вычисляет 40-100, и возвращает -60 (отрицательное значение).
Функция сортировки сортирует 40 как значение ниже 100.
Этот фрагмент кода можно использовать для сортировки чисел и сортировки по алфавиту:
Сортировать по алфавиту
Сортировать по числам
Как отсортировать массив однотипных javascript-объектов по значению одного из их свойств. Решения для числовых, а так же для строковых типов данных.

Как отсортировать массив однотипных объектов по значению одного из их свойств.
Для примера возьмём массив пользователей, где у пользователей есть id, имя и возраст:
Для сортировки массивов используем метод sort() .
Чтобы отсортировать массив из объектов пользователей по возрасту (по цифровым значениям), используем то же правило что и для сортировки цифровых массивов , так как возраст является числом.
Собственно в нашем примере массива мы должны в калбеке работать со свойством age:
Как видно всё очень просто.
Немного сложнее выглядит задача отсортировать наш массив пользователей по имени. Для этого в калбеке нам нужно использовать условия.
Сортируем массив пользователей по имени — готовое решение:
Как видно, в результате объекты в массиве отсортированы по именам пользователей.
*** Авторизируйтесь чтобы писать комментарии.
Если вам нужно рассортировать массив объектов в определенном порядке, возможно, вы почувствуете искушение применить библиотеку JavaScript. Прежде чем приняться за это дело, помните, существует встроенная функция сортировки Array.sort. В этой статья я расскажу вам, как сортировать массив объектов без особой суеты.
Базовая сортировка массива
По умолчанию, функция Array.sort в JavaScript конвертирует каждый элемент в массиве в строку, а затем сравнивает их в порядке Unicode code point.
Немного странно, почему 30 идет перед 4. не логично, да? На самом деле все логично. Это происходит по причине того, что каждый элемент в массиве сначало конвертируется в строку, и «30» находится перед «4» в порядке Unicode.
Заметьте, что в отличии от многих других функций в JavaScript, функция Array.sort изменяет или мутирует сортируемый массив.
Чтобы предотвратить это, вы можете создать новый массив для сортировки и модифицировать его.
Просто использовать Array.sort может быть не так эффективно для сортировки массива объектов, но к счастью функция принимает параметр compareFunction, который позволяет сортировать массив элементов согласно возвращаемому значению функции сравнения.
Используем функцию сравнения для сортировки
Допустим a и b — два элемента сравниваемых в функции. Если возвращаемое значение будет:
1 меньше 0 — a идет перед b
2 больше 0 — b идет перед a
3 равно 0 — a и b не изменяются
Рассмотрим простой пример:
Код можно рефакторить для получения возвращаемого значения, извлекая a из b
Теперь можно создать стрелочную функцию:
Сортировка массива объектов в JavaScript
А теперь перейдем к сортировке массива объектов. Возьмем следующий пример:
Мы используем функцию сравнения для сортировки массива согласно жанру:
Чтобы поменять порядок, мы можем инвертировать возвращаемое значение:
Создаем динамическую функцию сортировки
Закончим на более динамичном примере. Создадим функцию, с помощью которой можно сортировать массив объектов, чьи значения не являются строками или числами. Функция имеет два параметра — ключ, которым мы сортируем и порядок получаемого результата (ascending или descending).
Вот как мы это используем:
Выше мы используем метод hasOwnProperty чтобы проверить, установлено ли указанное свойство в каждом объекте и не было ли оно унаследовано через прототип цепи. Если он не указан в объекте, функция вернет 0, что оставляет порядок сортировки как есть (объекты остаются неизменными).
Typeof operator также используется для проверки типа даты данного значения. Это позволяет нам определить правильный способ сортировки массива. К примеру, если значение указанного свойства является строкой, метод toUpperCase используется для конвертирования всех символов в верхний регистр, поэтому происходит игнорирование регистра при сортировки.