【问题标题】:Javascript enum with multiple values and value types具有多个值和值类型的 Javascript 枚举
【发布时间】:2017-01-03 05:26:38
【问题描述】:

我正在尝试制作一个读取 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)

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

【问题讨论】:

    标签: javascript enums


    【解决方案1】:

    您可以发挥创造力并像 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 对象。

    【讨论】:

    • 这正是我正在寻找的,澄清我并不是专门寻找一个枚举,它只是我知道如何做这种事情的唯一方法。
    • 很高兴我能帮上忙。
    【解决方案2】:

    你不能用 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-28
      • 2023-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      相关资源
      最近更新 更多