@outplayedrq

Как отсортировать элементы внутри объекта?

Хочу отсортировать инвентарь, по возрастанию цены. Применяю данную конструкцию для того, чтобы вывести одно сообщение, а не в каждой итерации цикла выводить сообщение, тем самым не спамить по 6-8 сообщений.

let uid = message.author.id
let account = profile.accounts[uid].inventory

let bagItems = Object.values(account).map(({ title, amount,}) => `${title} ━ ${amount}`).join('\n')

Понимаю, что нужно сортировать через метод sort. Дальше создавать функцию. Но ведь нужно будет указать в этой функции с помощью какой переменной нужно сортировать, как я понял метод sort можно вызвать только после Object.values(account).sort(), но если так объявлять метод map не работает и переменная с помощью которой нужно сортировать не объявляется (даже если бы map работал, то переменная объявляется все равно после метода sort). Как я могу реализовать это с данной конструкцией? Или может использовать другую конструкцию, но если будете предлагать другие конструкции, то только, чтобы бот выводил в одно сообщение, дабы не спамить сообщениями каждую итерацию цикла

Вот сам объект из JSON базы данных:
"596350327645798410": {
            "username": "uou//",
            "lvl": 2,
            "detali": 1,
            "pixel": 0,
            "inventory": {}
        },
        "279997562197639168": {
            "username": "cutls",
            "lvl": 2,
            "detali": 22,
            "pixel": 975100,
            "inventory": {
                "Item-4": {
                    "id": 4,
                    "title": "Подарок 4",
                    "price": 1000,
                    "amount": 6
                },
                "Item-6": {
                    "id": 6,
                    "title": "Подарок 6",
                    "price": 3000,
                    "amount": 4
                },
                "Item-5": {
                    "id": 5,
                    "title": "Подарок 5",
                    "price": 1500,
                    "amount": 3
                },
                "Item-3": {
                    "id": 3,
                    "title": "Подарок 3",
                    "price": 550,
                    "amount": 3
                },
                "Item-2": {
                    "id": 2,
                    "title": "Подарок 2",
                    "price": 500,
                    "amount": 1
                },
                "Item-1": {
                    "id": 1,
                    "title": "Подарок 1",
                    "price": 250,
                    "amount": 1
                }
            }
        }
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const sortedInventory = Object
  .values(inventory)
  .sort((a, b) => a.price - b.price)
  .map(n => `${n.title} - ${n.amount}`)
  .join('\n');
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы