Отсортировать объект
Мне нужно отсортировать объект. Как это сделать? Можно на чистом 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]
})