2010-02-18 51 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 
}