получение значений из цикла for и их динамическое добавление в JSON в массиве - PullRequest
1 голос
/ 10 марта 2011

Итак, у меня есть цикл for, который возвращает для каждой записи результата

идентификатор название Дата начала EndDate

здесь это цикл for ниже>

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

Итак, в конце, в зависимости от того, сколько записей возвращено, у меня будет несколько таких.

Что я хочу сделать, так как эти записи создаются в цикле динамически, добавьте их в мой объект json

  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 1 добавляется в объект, затем 2, затем 3. Я читал о методе .push, но не уверен, как я его структурирую.

Ответы [ 2 ]

2 голосов
/ 11 марта 2011

Это должно выполнить то, что вы ищете.

<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>     
1 голос
/ 11 марта 2011

Вы можете использовать $ .map () для простых преобразований.Предполагается, что вы получаете массив объектов со свойствами id, Name, StartDate и EndDate:

var jsonObject = $.map(data.d.results, function(item, i) {
  return {
    id: i,
    name: item.Name,
    series: [{ start: item.StartDate, end: item.EndDate }]
  };
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...