Вы можете отсортировать значения в вашем объекте, а затем перебрать ключи объекта, чтобы проверить, совпадает ли текущее значение с текущим значением в массиве sorted
, если это так, вы можете установить текущий объект order
свойство индекса + 1 (так как индекс начинается с 0):
См. Пример ниже:
const o = {
a: {value: 3},
b: {value: 1},
c: {value: 4},
d: {value: 2}
},
sorted = Object.values(o).sort(({value:a},{value:b}) => b-a);
sorted.forEach(({value}, i) => {
for(key in o) {
if(o[key].value == value) o[key].order = i+1
}
});
console.log(o);
Однако это не лучшее решение с точки зрения сложности времени, и я уверен, что оно может быть улучшено