jQuery $.each () Итерация объекта массива JSON

#jquery #json #each

#jquery #json #каждый

Вопрос:

У меня возникают некоторые реальные трудности при попытке решить итерацию jQuery $.each ()

Это мой массив, ограничивающий результаты для удобства

 [{"GROUP_ID":"143",
  "GROUP_TYPE":"2011 Season",
  "EVENTS":[
    {"EVENT_ID":"374","SHORT_DESC":"Wake Forest"},
    {"EVENT_ID":"376","SHORT_DESC":"Yale"},
    {"EVENT_ID":"377","SHORT_DESC":"Michigan State"}]
 },
 {"GROUP_ID":"142",
  "GROUP_TYPE":"2010 Season",
  "EVENTS":[
    {"EVENT_ID":"370","SHORT_DESC":"Duke"},
    {"EVENT_ID":"371","SHORT_DESC":"Northwestern"},
    {"EVENT_ID":"372","SHORT_DESC":"Brown"}]
}]
  

Моя первая итерация $.each работает очень хорошо, но на второй итерации для «СОБЫТИЙ» у меня возникают проблемы

Моя первая функция $.each()

      $.each(json, function(key) {

            html = '<a href="' json[key].GROUP_ID '">';

     ....
  

Моя нерабочая вторая функция $.each()

      $.each(json.EVENTS, function(key) {
    newHTML  = '<p>' json.EVENTS[key].SHORT_DESC '</p>';


     ...
  

Я понимаю (приблизительно), что это не отдельный объект JSON, а массив объектов JSON, но не понимаю, работает ли первая версия, почему вторая нет

конечный результат, которого я хочу достичь, как только я пойму, что это $.each() внутри $.each (), я знаю, что приведенный ниже код не работает и, скорее всего, идиотский, но дает представление о том, чего я пытаюсь достичь: выполнить итерацию через родительский элемент, затем дочерний элемент по родительскому элементу

 $.each(json, function(key) {

            html = '<a href="' json[key].GROUP_ID '">';

     $.each(json[key].EVENTS, function(subkey) {

            html = '<a href="' json[key]EVENTS[subkey].SHORT_DESC '">';
 ...
  

Ответ №1:

Также назначьте вторую переменную для $.each function() , что значительно упрощает задачу, поскольку она предоставит вам данные (так что вам не придется работать с указателями).

 $.each(json, function(arrayID,group) {
            console.log('<a href="' group.GROUP_ID '">');
    $.each(group.EVENTS, function(eventID,eventData) {
            console.log('<p>' eventData.SHORT_DESC '</p>');
     });
});
  

Следует распечатать все, что вы пытались в своем вопросе.

http://jsfiddle.net/niklasvh/hZsQS/

редактировать переименованные переменные, чтобы было немного легче понять, что есть что.

Комментарии:

1. Это прекрасная вещь, работает как шарм. Я действительно ценю ваш ответ, точный и простой в реализации, еще раз спасибо