2016-10-13 2 views
0

나는이처럼 보이는 JSON을 반환합니다. 나는이 같은 객체에 액세스 :순회 모든 개체 속성이

var metrics = report.specifications[0] 

이 같은이 두 가지 속성을 반복하는 것을 시도하고있다 : 대신 내가 다른 특성을 가진 매우 큰 목록을 얻을이 두 가지 속성을 얻는, 비록

for(var key in metrics) { 
     if (metrics.hasOwnProperty(key)) { 
      console.log(key + " -> " + metrics[key]); 
     } 
    } 

개체의

내가 얻을 무제한 목록의 첫 번째 줄은 다음과 같습니다

__parentArray -> { metrics: { 'ga:pageviews': true, bounceRate: false } } 

이 내 문제와 관련이있다 하는가?

reportId: String, 
specifications : [{ 
    metrics: { 
     'ga:pageviews': Boolean, 
     bounceRate: Boolean 
    }, 
    dimensions: { 

    } 
} 
] 
} 

어떤 아이디어 :

전체 JSON 스키마는 다음과 같습니다? 여기 toObject() 메소드를 첨가함으로써 해결

+0

http://stackoverflow.com/questions/1098040/checking-if-a-key-exists-in-a-javascript-object –

+0

아니 생각. 이 코드는'metrics' 객체가 있다고 가정 할 때만 두 속성을 반복해야합니다. 문제의 정보가 충분하지 않아 무엇이 잘못되었는지 알 수 없습니다. –

+0

그래, 그 이상한 내가 무제한 목록을 얻을 – Manos

답변

0

:

var metrics = report.specifications[0].metrics.toObject(); 
0

가장 좋은 방법은 Object.keys를 사용하는 자바 스크립트 속성을 반복한다. 이 작업을 수행하고 for 루프를 사용하는 것과 다른 점은 Object.keys이 프로토 타입 체인의 속성을 무시한다는 점입니다.

Object.keys(metrics).forEach(function (key) { 
    console.log(key + " -> " + metrics[key]); 
}); 
+0

이전에 잘못된 대답을했다. 그것은 게으른 복사 - 붙여 넣기 시도였습니다. 그러나 for 루프와 Object.keys의 차이점을 아는 것은 유용합니다. –