2015-05-12 69 views
2

如果我有這樣一組鍵/值對:的JavaScript訪問數組的對象值的元素

WX Code  WMO WX Code Description 
-------  ----------------------- 
00  No significant weather 
04  Haze 
10  Mist 
20  Fog detected in last hour 
21  Precip detected in last hour 
22  Drizzle detected in last hour 
23  Rain detected in last hour 
24  Snow detected in last hour 

,我想用整數代碼訪問作爲數組,什麼是格式的最好方式數組? 如果我試試這個

var arrWXcodes = [ 
{00:"No significant weather"}, 
{04:"Haze"}, 
{10:"Mist"}, 
{20:"Fog detected in last hour"}, 
{21:"Precip detected in last hour"}, 
{22:"Drizzle detected in last hour"}, 
{23:"Rain detected in last hour"}, 
{24:"Snow detected in last hour"}]; 

我嘗試訪問陣列來獲得,說「雷雨」像這樣,我沒有得到我想要的東西。我想關鍵的整數值,而不是數組中的位置來訪問陣列

arrWXcodes["04"] 
undefined 
arrWXcodes[04] 
Object { 21: "Precip detected in last hour" } 

什麼是最佳的數據結構和訪問方法,以便能夠使用一個整數鍵進入陣列和獲得期望值?

+0

JavaScript對象僅僅是鍵/值對的集合似乎適合您的需求。 – Craicerjack

回答

8

刪除對象的數組,只是有一個主要目標:

var arrWXcodes = { 
    "00": "No significant weather", 
    "04": "Haze", 
    ... 
} 

然後,您可以通過使用​​訪問它們的屬性等

你得到不同結果的原因在少於預期傳遞整數時自己的代碼是因爲這樣做引用數組的索引而不是屬性名稱。 0在上例中是"No significant weather",而"Haze"1而不是4。索引4(數組中的第5項)是值爲"Precip detected in last hour"的對象。

如果你真的希望能夠通過使用"" + 4一個整數訪問值,您可以將數字轉換爲字符串,但是這會產生"4"而不是"04",因此,如果您的鍵名是在結構你」 d需要執行如下操作:How can I pad a value with leading zeros?

0

基本上,您正在定義一個對象數組。如果你按指數04去是第五個元素:{21:"Precip detected in last hour"}。索引"04"未在數組中定義。數組是像整數鍵和值的對象:arrWXcodes={0:{00:"No significant weather"},1:{04:"Haze"}...}

而不是使用一個數組,你應該這樣詹姆斯回答以下使用對象

arrWXcodes={ 
    "00":"No significant weather", 
    .... 
}; 
+1

雖然不回答任何用戶問題。 – Craicerjack