2012-09-24 5 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" 
       ]; 

제 1 및 제 2 요소 "인접"를 포함하지 않고, 세 번째 요소는 않는다. 루프에서 for (i = 0; i < JsonArray.length; i++) 어떻게 세 번째 요소에 액세스합니까? .contain 속성이 있습니까? 여담으로

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

: 값이 유형 undefined의 경우 사전 : 그것을 할

+1

은'in' 연산자를 사용하여, 예를 들어, obj의 'property'// 부울을 반환합니다. – timidboy

+0

하지만 객체에 "in"을 사용할 때는 프로토 타입의 속성을 반복 할 때주의해야합니다. –

답변

2

한 방법으로 덕분에 확인하는 것입니다 이것은 JSON의 배열이 아닌 - 그것은 자바 스크립트 배열입니다. 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

관련 문제