Вы можете получить записи вашего объекта (с Object.entries()
) и .sort()
их, чтобы получить заказ для вашей таблицы лидеров. Затем используйте .map()
в ваших отсортированных записях, чтобы сопоставить их с объектами, где значение объекта является игроком, а индекс + 1 (i+1
) записи является ключом. Затем вы можете использовать Object.assign()
для создания большего объекта из этого массива:
const scores = {
'player1' : 9,
'player2' : 3,
'player3' : 7,
'player4' : 5
};
const leaderboard = Object.assign(
{},
...Object.entries(scores)
.sort(([,a], [,b]) => b-a)
.map(([p], i) => ({[i+1]: p}))
);
console.log(leaderboard);
Примечание: Требуемый вывод - это объект с пронумерованными непрерывными клавишами. Обычно вы используете массив для хранения данных этого типа, где элемент в позиции 0
является «верхним» лидером. Для вывода массива вы упрощаете приведенный выше код:
const scores = {
'player1' : 9,
'player2' : 3,
'player3' : 7,
'player4' : 5
};
const leaderboard = Object.entries(scores)
.sort(([,a], [,b]) => b-a)
.map(([p]) => p)
console.log(leaderboard);