2012-08-08 99 views
0

我正在遍歷一個json對象,並且由於一個額外的元素而失敗。javascript通過json對象移動如何判斷一個元素是否存在

見代碼波紋管

{ 
"rootLayout":"main", 
"layoutDescriptions":[ 
     { 
     "type":"Panel", 
     "label":"Repeating Groups By Subform", 
     "layout":"SimpleForm", 
     "content":[ 
      { "type":"label", "constraint":"newline", "text":"Contacts" }, 
      { "type":"repeatableGroup", "property":"contacts", "contentRef":"ContactSubForm" } 
     ] 
     }, 
     { 
     "type":"Panel", 
     "label":"", 
     "container" : { 
      "type":"Panel", 
      "layout":"SimpleForm", 
      "content":[ 
      { "type":"label", "constraint":"newline", "text":"Contact Name" }, 
      { "type":"ListView", "property":"contactName", "listProps":["contactName","telephone","email"] } 
      ] 
     } 
     }, 

它在陣列中的第二個元素上失敗,我用下面讓我的結果

data.layoutDescriptions[0].container.content[i].content 

我知道它的

data.layoutDescriptions[0].container.content[1].content 
因爲停止

它期望

data.layoutDescriptions[0].container.content[1].container.content 

所以我的問題是如何說容器是否存在做這個否則做到這一點。

我正在嘗試此刻,這是行不通的。

var contentObjects = data.layoutDescriptions[0].container.content[1].content; 
if(contentObjects.container){ 
       alert("container exists"); 
       } 
         else{ 
        alert("nope"); 
        } 

謝謝。

+0

所以,其實你的問題無關使用JSON,只是如何測試JavaScript對象的屬性的存在? – 2012-08-08 15:24:55

+0

[javascript測試存在嵌套對象鍵]的可能重複](http://stackoverflow.com/questions/2631001/javascript-test-for-existence-of-nested-object-key) – 2012-08-08 15:25:24

回答

1

使用hasOwnProperty檢查的對象都有自己的屬性存在:

var contentObjects = data.layoutDescriptions[0].container.content[1]; 
if(contentObjects.hasOwnProperty('container'){ 
    alert("container exists"); 
} 
else{ 
    alert("nope"); 
} 
1

問題是,並非陣列layoutDescriptions中的每個對象都具有屬性container。當您遍歷第一個對象時,它會查找container,找不到任何內容,然後在undefined上搜索content,並引發錯誤。

另外,在data.layoutDescriptions[0].container.content[1]之內,您沒有content屬性。 contentObjects設置爲undefined,因此contentObjects.container將失敗。

相關問題