2012-09-24 106 views
0

我有一個Json數組,其中包含以下元素: 「adjacencies」,「data」,「id」,「name」。 在某些元素中,「鄰接」不存在。 這是一個例子:如何訪問Json數組中的特定元素?

var JsonArray = [ 
       { 
        "id" : "id1", 
        "name" : "name1", 
        "data" : { 
          "$type" : "circle", 
          "$color" : "#AEC43B" 
          } 
       }, //Without "adjacencies" 

       { 
        "id" : "id2", 
        "name" : "name2", 
        "data" : { 
          "$type" : "circle", 
          "$color" : "#AEC43B" 
          } 
       }, //Without "adjacencies" 

       { 
        "adjacencies": [ 
            { 
            "nodeTo": "id1", 
            "nodeFrom": "id3", 
            "data": { 
               "$color": "#416D9C" 
              } 
            } 
            ], 
        "id" : "id3", 
        "name" : "name3", 
        "data" : { 
          "$type" : "circle", 
          "$color" : "#AEC43B" 
          } 
       } //With "adjacencies" 
       ]; 

第一和第二元件不包含「鄰接」,但第三元件一樣。 在循環中for (i = 0; i < JsonArray.length; i++)我該如何訪問第三個元素? 例如,是否有.contain屬性? 感謝提前:)

+1

使用'in'運營商,例如obj中的''property'//返回一個布爾值' – timidboy

+0

但是在對象中使用「in」時要小心,因爲它也會遍歷原型的屬性。 –

回答

2

一種方式來做到這一點是通過檢查值undefined類型:

for (i = 0; i < JsonArray.length; i++) { 
    var item = JsonArray[i]; 
    if (typeof item.adjacencies !== "undefined") { 
     // item has adjacencies property 
    } 
} 

順便說一句:這不是一個JSON陣列 - 這是一個Javascript數組。沒有JSON對象,沒有JSON數組,沒有JSON。唯一存在的JSON-y事物是普通的JSON,這是一種序列化格式。

+0

謝謝。它的工作原理:) – Hanady

0

使用hasOwnProperty

這樣你就可以做到這一點

for (i = 0; i < JsonArray.length; i++){ 
    if(JsonArray[i].hasOwnProperty('adjacencies')){ 
     //Do something here 
    } 
} 
+0

這也適用。謝謝 – Hanady