2017-01-03 4 views
0

Итак, это название может быть неправильным, но я действительно не знаю, как задать этот вопрос: я пишу бота, используя Discord.js, и я пытаюсь ответьте строку из перечисления на основе приведенного сообщения.Использование строки внутри как имя функции (Javascript)

const Heroes = { 
VengefulSpirit: { 
inCaptainsMode: true, 
primaryAttribute:'Agility', 
    attributeGains:{ 
    Strength: 2.6, 
    Agility: 3.3, 
    Intelligence: 1.5 
    }, 

}, 
} 

Вот Input

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 вместо hardcoding для каждого героя (таких как 112). Я пытаюсь создать динамическую функцию, чтобы она была короче.

ответ

2

Используйте Heroes[heroName] для доступа к клавишам вашего Heroes объекта вместо Heroes.heroName.

2

Использование: Heroes[heroName]. Точечная нотация не будет работать в этой ситуации ... Удачи с вашей RPG, хотя;)

+0

Thankyou! это сработало – Infinite

Смежные вопросы