2010-02-18 58 views
1

的属性我有两个级别的JSON对象你如何动态地访问一个JSON对象

EX:

var regexDefs = { 

     "alpha": { 
      "regex" : /^[A-Z]+$/, 
      "errMsg" : "Alpha Only" } 
     } 

我想做一个类似于寻找一个关键的阵列。

(使用jQuery的inArray)

var key = "alpha"; 
alert($.inArray(key,regexDefs)); 

钥匙是否在数组中,然后我想做

if(regexDefs[key].regex.test){ return true; } 

我知道有可能是一些时髦的我缺少的,因为这是一个对象不是数组...

$.inArray(key,regexDefs) 

返回undefined

=/

有什么想法?

回答

6

最准确的方法是

if ("alpha" in regexDefs) 
{ 
} 

即使alpha这将评估真实是一个错误的值,例如0,null,NaN,false等。

你可以做同样的一个变量:

var key = "alpha"; 
if (key in regexDefs) 
{ 
} 
+0

+1这确实更强大。 – BalusC 2010-02-18 17:09:25

3

只要做到:

if (regexDefs[key]) { 
    // Present. 
} else { 
    // Not present. 
} 

要了解更多关于JSON,我可以推荐你Mastering JSON

+0

确定这个工作。我想我不需要搜索 – qodeninja 2010-02-18 17:04:19

+0

然而,检查安迪E的答案是否有一些更强大的方法:) – BalusC 2010-02-18 17:08:38

+0

倒数+1似乎是为了顺序,如果你确定'key'不会是一个虚假的价值:-) – 2010-02-18 17:12:01

2
if (regexDefs['alpha']) { 
    // alpha exists in regexDefs 
}); 
2

如果密钥被存储在一个变量命名的键,你可以使用类似:

if(regexDefs[key]) { 
    // do your thing 
}