好的,这个标题可能不正确,但我真的不知道如何提出这个问题:我正在使用Discord.js编写机器人,我正在尝试根据给出的消息回复枚举中的字符串
const Heroes = {
VengefulSpirit: {
inCaptainsMode: true,
primaryAttribute:'Agility',
attributeGains:{
Strength: 2.6,
Agility: 3.3,
Intelligence: 1.5
},
},
}
这是输入
case 'venge': case 'vengeful spirit': case 'Vengeful Spirit':
message.reply(getHeroDetails('VengefulSpirit'));
遗憾的是输出不正常
function getHeroDetails(heroName){
var heroDetails = '';
heroDetails += 'Primary Attribute: ';
heroDetails += Heroes.heroName.primaryAttribute.toString();
heroDetails += '\n In captain\'s mode: ';
heroDetails += Heroes.heroName.inCaptainsMode.toString();
heroDetails += '\n Strength gain: ';
heroDetails += Heroes.heroName.attributeGains.Strength.toString();
heroDetails += '\n Agility gain: ';
heroDetails += Heroes.heroName.attributeGains.Agility.toString();
heroDetails += '\n Intelligence gain: ';
heroDetails += Heroes.heroName.attributeGains.Intelligence.toString();
return heroDetails;
}
现在我使用heroName作为输入字符串,因此在这种情况下它将是VengefulSpirit,如果我在所有这些调用中使用它来替换heroName,则该函数可以正常工作。我只是不知道如何使用heroName而不是为每个英雄硬编码一个函数(其中有112个)。我正在尝试创建一个动态函数,以便它更短。
答案 0 :(得分:2)
使用Heroes[heroName]
访问Heroes
对象的密钥,而不是Heroes.heroName
。
答案 1 :(得分:2)
使用:Heroes[heroName]
。点符号在这种情况下不会起作用......
祝你的RPG好运;)