2015-09-04 5 views
2

this is what my variable looks like in the debuggerработает для каждого цикла для вложенного JSON

Ok поэтому по существу я есть то, что я думаю, что это объект JSON. Вы видите его свойства на изображении, который я предоставил, теперь в значительной степени то, что я пытался сделать, это написать для каждого для конкретного lvl.

$.each(toSort.items.items.items.items.items, function (index, value) { 
    console.log(index); 
}); 

Так что я очень хочу, чтобы петля была вложена в пятый уровень, запустил код. так что я хочу знать, почему код выше недействителен?

+0

Посмотрите на тип данных рядом с каждым слоем вашего объекта. Вы должны обращаться к каждому слою по типу. Вы не можете адресовать массив точкой, вам нужно использовать индекс. – scrappedcola

ответ

2

Поскольку элементы всегда представляют собой массив, вам придется ссылаться на определенный индекс внутри этого массива. Если вы хотите получить один отдельный элемент, вы также должны использовать индексы.

toSort[0].items[0].items[0] //third level 

Если вам нужны все значения из этих массивов, вам лучше использовать более одного цикла. Более того, for() намного быстрее, чем each() jQuery.

for(var i = 0; i < toSort i++){ 
    //first level 
    for(var j=0; j < toSort[i].items; j++){ 
     //second level 
     for(var x=0; x < toSort[i].items[j].items; x++){ 
      //third level 
     } 
    } 
} 
1

Элементов являются массивами в каждом слое до 5, а также, так что получить доступ к массиву элементов внутри первого слоя вам необходимо указать индекс, делая toSort.items.items, вторые элементы являются beign, доступный как свойство, которого не существует, для доступа к массиву вторых элементов внутри массива первых элементов, к которому вы должны обращаться, как toSort.items [0] .items и т. д.

Примером последующего доступа может быть

toSort.items[0].items[0].items[0].items[0].items[0] 
toSort.items[0].items[0].items[0].items[0].items[1] 
toSort.items[0].items[0].items[0].items[0].items[2] 
... 
toSort.items[0].items[0].items[0].items[1].items[0] 
toSort.items[0].items[0].items[0].items[1].items[1] 
toSort.items[0].items[0].items[0].items[1].items[2] 
... 
... 
... 
toSort.items[1].items[1].items[1].items[1].items[0] 
toSort.items[1].items[1].items[1].items[1].items[1] 
toSort.items[1].items[1].items[1].items[1].items[2] 

Похоже, он может быть использован немного рекурсии, не так ли?

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