Рубрики
Без рубрики

Как отсортировать массив объектов по значению свойства в JavaScript

Узнайте, как отсортировать массив объектов по значению свойства в JavaScript

Допустим, у вас есть массив таких объектов, как этот:

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/”