В вашей ошибке говорится, что coins.sort() is not a function
.
Ваша переменная монет является объектом. Если вы посмотрите MDN / другой веб-сайт, чтобы узнать о методах, доступных для объекта, вы увидите, что метод сортировки недоступен.
Итак, вы пытаетесь вызвать функцию, которая выполняет не существует, отсюда и ошибка.
Текущий способ хранения пользователей и монет (не рекомендуется)
Если вы хотите отсортировать объект монет с помощью текущего файла, вы можете использовать
const sorted = [];
const keys = Object.keys(coins)
for (let user in coins) {
const coin = coins[user].coins;
const entry = {[keys[sorted.length]] : coins[user]}
if (sorted.length === 0) {
sorted.push(entry);
continue;
}
let i = 0;
while (sorted[i] !== undefined && sorted[i][Object.keys(sorted[i])].coins > coin) {
i++;
}
sorted.splice(i, 0, entry)
}
Пример JSFiddle
Способ, которым я буду хранить пользователей, а затем сортировать (рекомендуется)
Я бы рекомендовал сохранять ваших пользователей монетами как:
[{userID: "123", coins: 12}, ]
, тогда вы можете использовать
betterCoins.sort((a,b)=>{b.coins - a.coins});
Пример JSFiddle
Вы также можете просто преобразовать свой объект в массив и использовать рекомендуемый метод без необходимости изменять структуру вашего файла:
const newCoins = [];
for(let userObj in coins){
newCoins.push({"name" : userObj, "coins": coins[userObj].coins })
}