2017-01-03 22 views
0

我試圖製作一個讀取Dota 2英雄數據的系統,在這個系統中我必須存儲大量關於每個英雄的數據(強度增益,int增益,敏捷增益) (float)以及它們的主要屬性是什麼。帶有多個值和值類型的Javascript枚舉

這是我到目前爲止有:

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

您可以創造性地使用像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對象。

+0

這正是我正在尋找的,澄清我沒有特別尋找一個枚舉,這是我知道如何做這種事情的唯一方法。 – Infinite

+0

很高興我能幫到你。 – ppovoski

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)