Отсортировать объект

Мне нужно отсортировать объект. Как это сделать? Можно на чистом JS, или еще Lodash использую (там тоже не нашел ничего подходящего).

У меня есть массив с ключами: ['a', 'b', 'c'] и объект {b: 1, c: 2, a: 3}. Хочу получить на выходе {a: 3, b: 1, c: 2}. Единственное что в голову приходит - превратить объект в массив массивов пар ключ-значение, отсортировать функцией sort и снова собрать в объект. Но это какое-то такое себе решение...


Ответы (2 шт):

Автор решения: ПЭХАПЭШНИК

Нашел решение, может кому пригодится:

const flip = collection => {
  const result = {}
  
  for (const key in collection) {
    result[collection[key]] = key
  }
  
  return result
}

const sortObjectByKeys = (obj, comparator = null) => Object.keys(obj).sort(comparator).reduce((acc, key) => {
  acc[key] = obj[key]
  return acc
}, {})

const keys = ['a', 'b', 'c']
const keysInverted = flip(keys)
const obj = {b: 1, c: 2, a: 3}
console.log(sortObjectByKeys(obj, (l, r) => keysInverted[l] - keysInverted[r]))

→ Ссылка
Автор решения: Stas

Вроде и так работает

        const oldObject = { b: 1, c: 2, a: 3 }
        let newObject = {};
        ['a', 'b', 'c'].forEach(item => {
            newObject[item]=oldObject[item]
        })

→ Ссылка