Невозможно получить доступ к свойствам объекта - объекты - PullRequest
0 голосов
/ 31 октября 2018

Я работаю над диссон-ботом и делаю команду «помощь». Сначала у меня был массив команд, и если они нуждались в помощи по конкретной команде, мне нужно было добавить больше строк кода, чем я хочу. Мне было интересно, если бы я мог поместить объект внутри моего объекта, как это:

const commands1 = {
    coinflip: {
        usage: prefix + "coinflip",
        description: `Flip a coin then guess what it landed on.`
    }
    diceroll: {
        usage: prefix + "diceroll (number)",
        description: `Roll a die and guess what it lands on`
    }
};

Или я должен был бы сделать что-то еще, потому что, когда я делаю

for(var name in commands1){
    embed.addField("Command:", name)
}

здесь будут перечислены все доступные команды. Однако я не могу получить доступ к использованию или описанию, я попытался сделать это следующим образом:

.addField("Usage:", name.usage)
.addField("Description:", name.description)

(там указано неопределенное) Я неправильно обращаюсь к нему или я не могу помещать объекты в объекты. Извините, я относительно новичок в этом :) Спасибо.

Ответы [ 3 ]

0 голосов
/ 31 октября 2018

Вы используете цикл for...in, который перебирает индексы массива. Но реальный сценарий у вас есть object. Итак, в этом случае я бы предложил вам следующее:

const commands1 = {
    coinflip: {
        usage: prefix + "coinflip",
        description: `Flip a coin then guess what it landed on.`
    }
    diceroll: {
        usage: prefix + "diceroll (number)",
        description: `Roll a die and guess what it lands on`
    }
};

const keys = Object.keys(commands1); // #Output : ["coinflip", "diceroll"]

for(let key of keys){
   embed.addField("Command:", commands1[key].usage);
}
0 голосов
/ 31 октября 2018

Не беспокойтесь о том, чтобы быть новым, мы все начали где-то.

Ваши вопросы новичка, вероятно, лучше, чем мои были!

const commands1 = {
    coinflip: {
        usage: prefix + "coinflip",
        description: `Flip a coin then guess what it landed on.`
    },
/* Added a missing , above */ 
    diceroll: {
        usage: prefix + "diceroll (number)",
        description: `Roll a die and guess what it lands on`
    }
};

for(var name in commands1){
    embed.addField("Command:", name);
    console.log(commands1[name].usage);
    console.log(commands1[name].description); /* You can Use your index to directly access the object thru the parent object. */ 
}
0 голосов
/ 31 октября 2018

Я узнал это имя. буквально, и он думает, что я пытаюсь получить доступ к commands1.name, когда я хотел command1.coinflip. Поэтому я исправил это, сделав это

console.log(commands1.coinflip.usage)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...