2013-05-01 3 views
1

Как бы вы перебирали эту строку JSON после преобразования ее в объект с помощью jQuery для доступа к свойству Color?Как это манипулировать многомерными массивами JSON с помощью jQuery

[{"Puff":[{"Color":"Gray"},{"Color":"Blue"}]},{"Puff":[{"Color":"DarkRed"}]},{"Puff":[{"Color":"DarkBlue"},{"Color":"Yellow"}]}] 
+1

Прежде всего вы должны десериализации его в массив, то массив [я] .Puff [J] .Color –

+0

Спасибо за ответ , Я использовал parseJSON для десериализации, но был заинтересован в доступе к свойству, используя какой-то итерационный код. – avantprime

ответ

3

У вас есть массив объектов, которые все имеют ключ под названием «слойка», который содержит еще один массив объектов.

$.each(x, function(i) { 
    console.log(i); 
    $.each(this.Puff, function() { 
     console.log(this.Color); 
    }); 
}); 

0 
Gray 
Blue 
1 
DarkRed 
2 
DarkBlue 
Yellow 
+0

отличный ответ, но есть ли лучший способ сделать это? –

+1

@JoseVega: Ты должен знать лучше, чем спрашивать, Хосе. ;) –

+0

Спасибо, это сработало отлично! – avantprime

2

Я выбрал бы, не JQuery: http://jsfiddle.net/xguyj/

var x = [{"Puff":[{"Color":"Gray"},{"Color":"Blue"}]},{"Puff":[{"Color":"DarkRed"}]},{"Puff":[{"Color":"DarkBlue"},{"Color":"Yellow"}]}]; 

for(var i = 0; i < x.length; i++){ 
    for(var t = 0; t < x[i].Puff.length; t++) { 
     console.log(x[i].Puff[t].Color); 
    } 
} 
+0

Если у вас уже есть jQuery в вашем проекте, который выполняет OP, зачем использовать подробный для (;;) синтаксис и нужно выполнить x [i] .Puff [t ] .length безумие, когда вы можете просто сделать $ .each() и обратиться к вещам с помощью 'this'? Я не использую jQuery для всего, но для этого нет никакой причины идти в школу. = P –

+0

Если производительность не является проблемой, я согласен с вашим заявлением. В моем случае мне нравится, чтобы мое приложение выполнялось как худой и быстрый, насколько это возможно по-человечески. http://jsperf.com/object-iteration-speed –

+0

«Программисты тратят огромное количество времени на размышления о скорости некритических частей своих программ или беспокоятся о скорости их некритических частей, и эти попытки эффективности действительно оказывают сильное негативное влияние при отладке и мы будем забывать о небольшой эффективности, скажем, около 97% времени: преждевременная оптимизация - корень всего зла, но мы не должны упускать наши возможности в этих критических 3% ». Если вы зацикливаете на количество элементов, которые влияют на производительность, вы, вероятно, что-то делаете неправильно. –

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