2012-10-09 3 views
0

Прямо сейчас у меня есть json-файл, который im использует для заполнения данных внутри сайта.Вложение jQuery each() + json

LVL 1 - Главная страница Коллекция ->

2 LVL - Detail страница Коллекция ->

LVL 3 - Коллекция Detail страница слайдера

Так я 3 $ .each() заявления вложенными чтобы достичь этого. Все работает нормально. Мне просто интересно, есть ли более выгодный способ сделать это?

пример кода:

$j.getJSON('collections.json', function(data, status){ 
    // lvl 1 
    $.each(data.collections, function(i, collection){ 

    // do your thing 

     // lvl 2 
     $.each(collection.details, function(v, detail){ 

      // slider time - lvl 3 

      $.each(detail.slider, function(s, slide){ 

      // inception achieved 

      }); 

     }); 

    }); 
}); 

ответ

2

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

for (var i = 0; i < data.collections.length; i++) { 
    var collection = data.collections[i]; 
    //do your thing 
    for (var v = 0; v < collection.details.length; v++) { 
     //... 
    } 
} 
+0

Крутой, спасибо. Когда не нормально встраивать петли? – Robert

+1

@ Роберт никогда? Это зависит от ситуации. Вы должны стараться избегать повторения массива * того же * (или двух массивов, ожидаемых одинаковой длины) в вложенных циклах, если вы можете, но, очевидно, есть много раз, когда это то, что вы * имеете * делать. –

+0

Awesome, еще раз спасибо – Robert

Смежные вопросы