Inter-Net.PRO

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

  • 250 60
06 нояб 2018 01:17 #1 от Inter-Net PRO
Как отсортировать массив однотипных объектов по значению свойств.

Для примера возьмём массив пользователей, где у пользователей есть 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}]
Как видно, в результате объекты в массиве отсортированы по именам пользователей.


Полезная ссылка по теме - методы массивов .

Авторизация

Войти через соцсети: