Показать сообщение отдельно
  #1 (permalink)  
Старый 07.11.2015, 17:18
Интересующийся
Отправить личное сообщение для tybys Посмотреть профиль Найти все сообщения от tybys
 
Регистрация: 25.02.2011
Сообщений: 10

Смещение цикла, обход массива исключая дубли, полный ликбез
Добрый день, подскажите как лучше всего решить проблему. До меня к сожалению не доходит, не так часто пишу на js.

Имеется динамический массив (запросы к vk.api), по domready делаю 1 запрос, чтобы оперативно обрабатывать массив и показывать его содержимое. Далее, например по клику на тычку "more" я совершаю еще запросы и дописываю в массив новые значения.

Но у меня, каждый раз по клику на тычку "more" обрабатываются и дублируются данные

Сейчас пробовал с методом push (до этого был concat :18 строчка), чтобы у меня был всегда набор из "актуальных" данных, но у меня руки из {_o_}

пример в песочнице http://plnkr.co/edit/wSWybiotn3xYGIfroa3g

Буду рад любым объяснениям

var url = "https://api.vkontakte.ru/method/wall.get?domain=adme";
var offset = 0;
var postsCount = 0;
var result = [];

function newPost() {
    $.ajax({
        url: url,
        dataType: "jsonp",
        data: {
            count: 10,
            offset: offset
        },
        success: function(data) {
            var posts = data.response;

            postsCount = posts.shift();
            result.push(posts);
            offset += 10;

            parsePostsRaw();
        }
    });
}

function parsePostsRaw() {
    for (var i=0; i < result.length; i++) {
        for (var j = 0; j < result[i].length; j++) {
            var current = result[i][j].id;
            var text = $("<p>", {'class': 'text', text: result[i][j].text})
            var img = result[i][j].attachment.photo.src;
            var id = result[i][j].id;
            var li = $("<li>", {}).html("<p>"+result[i][j].text+"</p>"+"<img src='"+img+"' />"+"<span>"+id+"</span>");

            $('#resultText').append(li);
        }
    }
}

window.addEventListener("DOMContentLoaded", function () {
    newPost();

    $('#more').click(function () {
        newPost();
    });
});
Ответить с цитированием