Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как правильно распарсить массив? (https://javascript.ru/forum/misc/22355-kak-pravilno-rasparsit-massiv.html)

man 16.10.2011 17:56

Как правильно распарсить массив?
 
В результате обращения к апи вконтакте получаю массив со всеми фотками пользователя

Код:

{"response":[64,
{"pid":"114272714","aid":"33565378",
"owner_id":"5005272","created":"1214309659",
"src":"http:\/\/cs1437.vkontakte.ru\/u5005272\/33565378\/m_2a07b7cb.jpg",
"src_big":"http:\/\/cs1437.vkontakte.ru\/u5005272\/33565378\/x_5769a2b7.jpg",
"src_small":"http:\/\/cs1437.vkontakte.ru\/u5005272\/33565378\/s_beb1d458.jpg"}]}

тут 64 - это количество фотографий у пользователя, а дальше идет сам массив с фотографиями

если парсить так

$.each(response.response, function(i,v){
    if ($.inArray(v.src) < 0) {
.....


то сначала получаю undefined - это те самые 64
а дальше уже идут фотки


вот полный код получения фоток

//функция обращается к апи
function VKPhotosGet(){
    VK.Api.call('photos.getAll', {'owner_id':vk_uid}, onVKPhotosGet);	
}

// а эта функция обрабатывает полученные результаты
function onVKPhotosGet(response){
	$.each(response.response, function(i,v){
		if ($.inArray(v.src) < 0) {
			$("#profile_photos").append("<div style='background:url("+v.src+") no-repeat;'></div>");
		}
	});
}

cyanidesign 16.10.2011 23:36

Можно просто пропустить первый элемент массива:
for (var i = 1; i < response.length; i++) {...}


Так же, желательно сначала сконструировать html, а затем за 1 операцию вставить элемент на страницу (т.к. операции обращения к DOM довольно медленные).

Если не сложно, приведи пример массива с несколькими фотками.

man 19.10.2011 16:56

А можно как-то чтобы не пропускать первый элемент? Можно конечно подсчитать количество элементов в массиве с помощью length, но зачем если уже это число известно, только надо его правильно получить?

Snipe 19.10.2011 17:02

http://www.json.org/js.html
eval
JSON.parse


Часовой пояс GMT +3, время: 18:12.