Как отсортировать объект по ключу в обратном порядке
Подскажите, как отсортировать объекты по ключам в обратном порядке.
const arr = [
{ id: 1, score: "12" },
{ id: 2, score: "8" },
{ id: 3, score: "4" },
{ id: 4, score: "8" }
]
const func = arr.reduce((group, product) => {
const { score } = product;
group[score] = group[score] ?? [];
group[score].push(product);
return group;
}, {});
console.log(func)
на данный момент они отображаются в обычном порядке. А нужно, чтобы начиналось с большего ключа и переходило к меньшему. В консоль должно выводиться
{
"12": [{ id: 1, score: "12" }],
"8": [{ id: 2, score: "8" }, { id: 4, score: "8" }],
"4": [{ id: 3, score: "4" }]
}
Ответы (1 шт):
Автор решения: Алексей Шиманский
→ Ссылка
У объектов всегда будет именно так. Этого не изменить... Так что придётся придумывать обходные пути. Например достать из объекта ключи и сложить в массив. Отсортировать массив в обратном порядке. А потом при выводе где-либо, делать цикл именно по этому отсортированному массиву, но доставать данные уже из объекта:
let obj = {
"12": [{ id: 1, score: "12" }],
"8": [{ id: 2, score: "8" }, { id: 4, score: "8" }],
"4": [{ id: 3, score: "4" }]
};
let arr = Object.keys(obj);
arr.sort((a, b) => +b - +a);
for (let element of arr) {
console.log(`Значения по ключу с номером ${element}:`, obj[element]);
}