具有多个值和值类型的Javascript枚举

时间:2017-01-03 05:26:38

标签: javascript enums

我试图创建一个读取Dota 2英雄数据的系统,在这个系统中我必须存储大量关于每个英雄的数据(力量增益,内部增益,敏捷性增益)(浮动)以及什么他们的主要属性是。

这是我到目前为止所做的:

const Heroes = {
Abaddon: 'Strength',
Alchemist: 'Strength',
AncientApparition: 'Intelligence',
AntiMage: 'Agility',
ArcWarden:'Agility',
Axe:'Strength',

}

尝试了这个:

const Heroes = {
Abaddon: ('Strength','3.4', '2.4', '1.8', true),
Alchemist: ('Strength','2.8', '2.3', '1.6', true),
}
console.log(Heroes.Abaddon)

输出只是最后一个值(true)

2 个答案:

答案 0 :(得分:2)

您可以获得创造性并使用像Java这样使用的枚举,而不仅仅是像许多其他语言一样重命名整数。或者你可以简单地使用这样的标准JavaScript对象:

const Heroes = {
  Abaddon: {
     primaryAttribute: 'Strength',
     attributeGains: {
        strength: 3.4,
        intelligence: 2.4,
        agility: 1.8
     }
  },
  Alchemist: {
     primaryAttribute: 'Strength',
     attributeGains: {
        strength: 2.8,
        intelligence: 2.3,
        agility: 1.6
     }
  }
};

访问这些值非常简单。

console.log(Heroes.Abaddon.primaryAttribute);
console.log(Heroes.Alchemist.attributeGains.agility);

我不确定你为什么特别需要一个Enum,但最后,你将制作一个复杂但标准的JavaScript对象。

答案 1 :(得分:0)

你不能用JavaScript做到这一点。括号只是额外的。尝试使用数组:

const Heroes = {
    Abaddon: ['Strength','3.4', '2.4', '1.8', true],
    Alchemist: ['Strength','2.8', '2.3', '1.6', true],
}
console.log(Heroes.Abaddon)