2011-03-10 2 views
1

그래서배열에 JSON에 추가 동적으로 for 루프에서 값을 불러 오는 및

여기를 각 결과 녹음합니다

ID 이름에 STARTDATE 종료 날짜를 반환하는 대한 루프를 아래의 for-loop>

 for (var i = 0; i < data.d.results.length; i++) { 
    } 

결국 얼마나 많은 레코드가 반환 될지에 따라 나는이 중 몇 가지를 가지게 될 것입니다. 이 기록은 루프에서 동적으로 생성 될 때 내가하고 싶은 일을

는,

jsonObject= [{ 
    id: 0, name: Name1, series: [{ start: Startdate1, end: Enddate1 }], 
    id: 1, name: Name2, series: [{ start: Startdate2, end: Enddate2 }], 
    id: 2, name: Name3, series: [{ start: Startdate3, end: Enddate3 }], 
    }]; 

그래서 루프를 통해 ID의 한 개체 내에서 추가됩니다 내 JSON 개체에 2를 추가입니다 그때. 3 .push 메서드를 읽었지만이 구조를 어떻게 구성했는지 확신 할 수 없습니다.

답변

2

이렇게하면 원하는 결과를 얻을 수 있습니다.

<html> 
    <head> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" ></script> 
    <script type='text/javascript' src='https://github.com/douglascrockford/JSON-js/raw/master/json2.js'></script> 
    <script type="text/javascript"> 
     var data = {}; 
     data.d = {}; 
     data.d.results = [ 
      ["1", "Bob", "01/01/2007", "12/31/2010"], 
      ["2", "Jim", "01/01/2007", "12/31/2010"], 
      ["3", "Tom", "01/01/2007", "12/31/2010"] 
     ]; 

     var jsonObject = []; 
     for (var i = 0; i < data.d.results.length; i++) { 
      var jsonItem = {}; 
       jsonItem.id = data.d.results[i][0]; 
       jsonItem.name = data.d.results[i][1]; 
       jsonItem.series = []; 

      var jsonSeries = {} 
       jsonSeries.start = data.d.results[i][2]; 
       jsonSeries.end = data.d.results[i][3]; 

      jsonItem.series.push(jsonSeries); 
      jsonObject.push(jsonItem); 
     } 

     alert(JSON.stringify(jsonObject)); 
    </script> 
    </head> 
    <body>  
    </body> 
</html>  
+0

당신이 data.d.results의 중요성을 설명해 주시겠습니까 : 이것은 당신이 속성의 ID, 이름, STARTDATE 및 종료 날짜와 객체의 배열을 수신하고 가정? 항상 2 차원 매트릭스입니까? –

+1

'data.d.results'는 단순히 OP가 그의 질문에서 제공 한 객체 구조이므로 내 대답에 같은 구조를 사용했습니다. 이 경우,'results'는 항상 2 차원 행렬 인 것으로 가정합니다. –

1

$ .map()을 사용하면 간단하게 변환 할 수 있습니다.

var jsonObject = $.map(data.d.results, function(item, i) { 
    return { 
    id: i, 
    name: item.Name, 
    series: [{ start: item.StartDate, end: item.EndDate }] 
    }; 
}); 
+0

+1 $ .map() 함수에 대해 알지 못했습니다. 아주 멋지다! –

관련 문제