2015-05-12 42 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