В этой статье я расскажу, как отсортировать произвольный порядок в массиве объектов в javascript.
В случае, если мы хотим упорядочить объекты, используя внутри них значения некоторых свойств.
Учитывая пример данных ниже:
const machines = [ { id: 1, client: 'Machine A', state: 'Ready' }, { id: 2, client: 'Machine B', state: 'Stopped' }, { id: 3, client: 'Machine C', state: 'Active' }, { id: 4, client: 'Machine D', state: 'Stopped' }, { id: 5, client: 'Machine E', state: 'Active' }, { id: 6, client: 'Machine F', state: 'Stopped' }, ]
Предположим, мы хотим отсортировать по «состоянию» следующим образом
«Активно», «Готово», «Остановлено».
Итак, мы определим объект в указанном выше порядке и присвоим им значение.
const sortedBy = { 'Active' : 0, 'Ready' : 1, 'Stopped' : 2, }
Затем мы воспользуемся методом «sort» для сортировки массива.
const result = machines.sort( (a, b) => sortedBy[a.state] - sortedBy[b.state] )
И получим такой результат, какой захотим. Повеселись!