在函数名称中使用字符串(Javascript)

时间:2017-01-03 10:10:06

标签: javascript string function enums

好的,这个标题可能不正确,但我真的不知道如何提出这个问题:我正在使用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个)。我正在尝试创建一个动态函数,以便它更短。

2 个答案:

答案 0 :(得分:2)

使用Heroes[heroName]访问Heroes对象的密钥,而不是Heroes.heroName

答案 1 :(得分:2)

使用:Heroes[heroName]。点符号在这种情况下不会起作用...... 祝你的RPG好运;)

相关问题