Допустим, у вас есть массив таких объектов, как этот:
const list = [
{ color: 'white', size: 'XXL' },
{ color: 'red', size: 'XL' },
{ color: 'black', size: 'M' }
]Вы хотите отобразить этот список, но сначала вы хотите упорядочить его по значению одного из свойств. Например, вы хотите упорядочить его по названию цвета в алфавитном порядке: черный, красный, белый.
Вы можете использовать sort() метод Массива , который принимает функцию обратного вызова, которая принимает в качестве параметров 2 объекта, содержащихся в массиве (который мы называем a и б ):
list.sort((a, b) => (a.color > b.color) ? 1 : -1)
Когда мы возвращаем 1, функция связывается с sort() что объект b имеет приоритет при сортировке над объектом a . Возвращающийся -1 сделал бы обратное.
Функция обратного вызова может вычислять и другие свойства, чтобы обрабатывать случай, когда цвет одинаков, и упорядочивать по вторичному свойству:
list.sort((a, b) => (a.color > b.color) ? 1 : (a.color === b.color) ? ((a.size > b.size) ? 1 : -1) : -1 )
Оригинал: “https://flaviocopes.com/how-to-sort-array-of-objects-by-property-javascript/”