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