В этой статье я расскажу, как отсортировать произвольный порядок в массиве объектов в 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]
)

И получим такой результат, какой захотим. Повеселись!