2017-11-22 13 views
0

에서 읽는 방법 :내가 <code>console.log(response);</code>을 수행 할 때 XML-RPC 응답

> [{..}] 
//expanded 
0: 
    testmessage: 
     testrep: 
      12-12-09: {value1: 200, value2: 150, value3: 165} 
      12-23-12: {value1: 20, value2: 150, value3: 165} 
      01-04-16: {value1: 0, value2: 150, value3: 165} 
      12-16-09: {value1: 150, value2: 150, value3: 165} 

나는 할 때 console.log(response[0].testmessage.testrep); :

> {2017-11-20: {…}, 2017-11-21: {…}, 2017-11-22: {…}, 2017-11-23: {…}} 
//expanded 
    12-12-09: {value1: 200, value2: 150, value3: 165} 
    12-23-12: {value1: 20, value2: 150, value3: 165} 
    01-04-16: {value1: 0, value2: 150, value3: 165} 
    12-16-09: {value1: 150, value2: 150, value3: 165} 

내가 testrep에서 각 날짜 행을 통해 루프를 시도하고 가치 번호를 얻을 수 값.

var len = response[0].testmessage.testrep.length을 사용하여 길이를 얻으려고 했으므로 루프를 통해 필드를 가져올 수 있지만 그 길이는 null입니다.

루프를 수행하고 날짜 별 값을 가져 오는 방법은 무엇입니까?

+0

'{...}'은 (는) 객체입니다. 그들은 길이가 없습니다. '[...]'는 배열이고 길이는 있습니다. 당신의 응답을보십시오. 배열에있는 모든 것은 반복/반복 할 수 있습니다. – Taplar

+0

방금 ​​알아 챘습니다. 고맙습니다. – Si8

+0

그래서 각 날짜가 객체 또는'testrep'라고 생각하고 있습니다. 그래서 어떻게 각 객체를 반복하여 속성과 값을 얻을 수 있습니까? – Si8

답변

1

response[0].testmessage.testrep이 대상입니다. JS의 Object에는 length 속성이 없으므로 Object.keys(response[0].testmessage.testrep).length을 수행하여 길이를 가져올 수 있습니다.

하지만 반복하고 싶으므로. JS에서 객체를 반복하는 몇 가지 방법이 있습니다. 하나의 간단한 방법은 다음과 같습니다 :

for(var date in response[0].testmessage.testrep) { //javascript 'var' 
    var data = response[0].testmessage.testrep[date]; 
    // do somethings here with data and date 
} 
+0

고맙습니다 ... 저를 위해 고쳐 주셨습니다. 뭔가 새로운'Objects.keys()'를 배웠습니다. – Si8

+0

어떻게'data'에서 각 값을 얻을 수 있습니까? 'data.valueOf ("value1")'시도했는데 작동하지 않았습니다. – Si8

+0

'data'는 객체입니다. 따라서'data.value1' 또는'data [ 'value1']'를 사용하여 액세스 할 수 있습니다. 또한'let'과'const'는 대부분의 최신 브라우저에서 작동했을 것입니다. –