Отображение 30 изображений Instagram определенного тега определенного идентификатора пользователя

У меня есть вызов API Instagram, который запрашивает изображения, помеченные CrookedSpaces, когда эти изображения возвращаются, я фильтрую данные, чтобы убедиться, что только изображения от определенного пользователя (используя их идентификатор пользователя), следующий код:

$(function() {
$.ajax({
    type: "GET",
    dataType: "jsonp",
    cache: false,
    url: "https://api.instagram.com/v1/tags/crookedspaces/media/recent/?count=100&access_token=TOKEN",
    success: function(data) {
        for (var i = 0; i < 31; i++) {
            var igUID = data.data[i].user.id;
            if(igUID === "USER ID") {
                $(".instagram").append("\
                    <div class='instagram-feed'>\
                        <img class='instagram-image' src='" + data.data[i].images.standard_resolution.url +"' width='325px' alt='" + data.data[i].user.id + " " + igUID + "' onMouseOver=\"toggle_visibility('igImageHover" + i + "');\"/>\
                            <div class='igHover' id='igImageHover" + i + "' onMouseOut=\"toggle_visibility('igImageHover" + i + "');\">\
                            <div class='igHover2'>\
                                SMALL TEST!\
                            </div />\
                            </div>\
                    </div>\
                ");
            } else {
                    console.log("Else portion of code ran " + elseCount + " time(s).");
                    ++elseCount;
                }
        }                
    }
});
});

Однако я могу отобразить только 27 изображений, потому что 4 изображения не опубликованы этим конкретным идентификатором пользователя. Есть ли способ заставить цикл for не увеличиваться? Или вычесть 1 из i, не отправляя код в бесконечный цикл?

Вот JSFiddle -- http://jsfiddle.net/UQcZP/


person tbremer    schedule 11.09.2012    source источник
comment
Не могли бы вы опубликовать JS Fiddle, с которым мы могли бы работать?   -  person David says reinstate Monica    schedule 11.09.2012
comment
возможно, используйте размер возвращаемого массива в качестве условия for и увеличивайте счетчик, когда идентификатор пользователя совпадает, а затем выходите из цикла, когда у вас есть желаемое количество изображений.   -  person MrOBrian    schedule 11.09.2012


Ответы (1)


Вы можете использовать цикл while:

var i = 0;
var used=0;
while (used<31)
{
  if (i < data.data.length){
     // .. Do your work here
     // only increment used when you actually get a match
  }
  else
  {
     // Here we are past the end of the data and did not reach the 30 items, 
     // so just set the number of items to 31 to exit the loop.
     used = 31; 
  }
  i++;    
}​
person John Koerner    schedule 11.09.2012
comment
Этот ответ сработал отлично, однако я пошел другим путем с кодированием. Я подумал, что могу хотя бы проголосовать/закрыть этот вопрос. - person tbremer; 17.09.2012