Сортировка массива объектов по свойству

Как отсортировать массив однотипных javascript-объектов по значению одного из их свойств. Решения для числовых, а так же для строковых типов данных.

Сортировка массива объектов по свойству

Как отсортировать массив однотипных объектов по значению одного из их свойств.

Для примера возьмём массив пользователей, где у пользователей есть id, имя и возраст:

let users = [
    {
        id: 1,
        name: 'Denis',
        age: 28
    },
    {
        id: 2,
        name: 'Olga',
        age: 25
    },
    {
        id: 3,
        name: 'Ivan',
        age: 18
    }
];

Для сортировки массивов используем метод sort().

Чтобы отсортировать массив из объектов пользователей по возрасту (по цифровым значениям), используем то же правило что и для сортировки цифровых массивов , так как возраст является числом.

Собственно в нашем примере массива мы должны в калбеке работать со свойством age:

users.sort((prev, next) => prev.age - next.age);

console.log(users); // → [{id: 3, name: "Ivan", age: 18}, {id: 2, name: "Olga", age: 25}, {id: 1, name: "Denis", age: 28}]

Как видно всё очень просто.

 

Немного сложнее выглядит задача отсортировать наш массив пользователей по имени. Для этого в калбеке нам нужно использовать условия.

Сортируем массив пользователей по имени - готовое решение:

users.sort((prev, next) => {
    if ( prev.name < next.name ) return -1;
    if ( prev.name < next.name ) return 1;
});

console.log(users); // → [{id: 1, name: "Denis", age: 28}, {id: 3, name: "Ivan", age: 18}, {id: 2, name: "Olga", age: 25}]

Как видно, в результате объекты в массиве отсортированы по именам пользователей.

Записи по теме
Объекты в JavaScript
Объекты в JavaScript Экспресс обзор объектов в JavaScript. Создание объектов, добавление свойств и методов, удаление свойств из объекта, перебор свойств объекта.
Проверка объекта на undefined
Проверка объекта на undefined Два способа как проверить свойство JavaScript объекта на undefined. Как узнать есть ли свойство у объекта.
Комментарии 0

*** чтобы писать комментарии.