Перебор массива объектов
Ребята, совсем не понимаю как разбирать сложные массивы объектов(((
Научите, PLZ!!! :cray: Везде в статьях простые примеры, а если попадаются сложные, то как разбирать данные не показано! Помогите разобрать с помощью jQuery такой вот, например, ответ от сервера: { "total":"18", "sellers": { "517": { "seller_name" : "Вася Пупкин и ко", "num":"3" } "688": { "seller_name" : "Роги и копытцы", "num":"15" } и т.д. и т.п.............. } } где 517 и 688 - id продавца спасибо |
Где вы видите у себя массив объектов? У вас тут просто 1 объект в формате json.
jQuery.parseJSON( json ) - на выходе получите объект javascript; |
Хорошо, как перебрать потом этот объект?
|
В k получаем id продавца, но как потом название переменной сделать по её значению???
Ну типа как в php используется двойной знак $$ Грубо говоря, смысл такой: jQuery.each(data.sellers, function(k, val) { currentSeller = data.sellers. + $$k; jQuery.each(currentSeller, function(k1, val2) { ........ }); }); Как это делается в JS ? Не могу понять своими php-шными мозгами ))) |
var sellers = data.sellers, seller, sellerId, sellerProp; for ( sellerId in sellers ) { for ( sellerProp in (seller = sellers[ sellerId ]) ) { window.console.log(seller[ sellerProp ]); } } |
Цитата:
|
Цитата:
a = { "total": "18", "sellers": { "517": { "seller_name": "Вася Пупкин и ко", "num": "3" } "688": { "seller_name": "Роги и копытцы", "num": "15" } } }; $.each(a, function(i, b) { // у нас i будет "total" // или "sellers" // при таком 'a', что выше // в 'b' будет 'a[i]' /* делаем чтото */ // a.sellers - объект. true, то есть if ($.isPlainObject(b)) { $.each( b, function(seller_id, seller_opts){ // имена переменных говорят сами за себя /* делаем что-то с продавцами */ alert( seller_opts.seller_name ) }); } }); |
Спасибо, большое, разобрался наконец таки :thanks:
Теперь умею листать объекты))) |
Цитата:
var sellers = data["sellers"]; //получаем всех подавцов из данных, //аналочично ассоциативному массиву из php var seller, sellerId, sellerProp; //объявляем вспомогательные переменные for ( sellerId in sellers ) { //перебираем аналогично foreach из php //здесь sellerId ключ "ассоциативного массива" sellers for ( sellerProp in (seller = sellers[ sellerId ]) ) { //в переменную seller получаем значения текущего продавца //и дальше перебираем уже по его ключам sellerProp window.console.log(seller[ sellerProp ]); } } В js нет ассоциативных массивов, есть объекты, я использую термин "ассоциативный массив", только в целях аналогии с php |
В догонку..
Насколько я понял, в моей строке после применения к ней parseJSON получается объект с вложенными в него объектами? Правильно? Никакими массивами же тут и не пахнет? А функция $.each в jQ умеет листать всё.. и массивы и объекты.. Просто в зависимости от данных иногда удобно создавать массивы, а иногда объекты.. так? пи.си. Ещё бы понять, что такое в массив объектов и объект массивов, и когда их удобно городить, было бы совсем хорошо)) |
Часовой пояс GMT +3, время: 10:24. |