Объединить каждый входящий ответ на свойства объекта - PullRequest
0 голосов
/ 09 сентября 2018

Я хочу объединить каждый ответ от resnews в свойства ojbect с именем newsObj.getNews.

API вызывает при первой загрузке страницы и продолжает загружаться при прокрутке вниз. Я хочу добавить каждый входящий ответ (который имеет ограничение 10) к свойству объекта.

Прямо сейчас каждый раз, когда вызывается API, он перекрывает данные в newsObj.getNews и показывает только 10.

  $.ajax({
    method: 'GET',
    url: url,
    data: newsParams,
    success: function(resnews) {
        // app.preloader.hide();
        if(resnews.status == 'ok') {
            if(type=="relevancy"){                      
                newsObj.getNews = resnews.articles; // overlapping my response 
                console.log(typeof resnews.articles); //returns object
                _self.renderNewsInUIAppend(resnews.articles, type)
            } else {
                newsObj.popular = resnews.articles;
                console.log(typeof newsObj);//returns object
                _self.renderNewsInUIAppend(resnews.articles, type);
            }
        } else {
            console.warn("There was error fetching error.");
        }
    }
})

Мой ответ от newsObj.getNews

enter image description here

1 Ответ

0 голосов
/ 09 сентября 2018

typeof [] даст "объект", потому что массив является объектом

console.log(typeof [])

Вы можете найти объяснение от здесь

И вы зацикливаете массив объектов для отображения данных. Таким образом, вы можете объединить новые данные со старыми, как показано ниже

var latestNews;
var newsObj = {};
var resNews = {};
resNews.articles = [{id: 1}, {id: 2}];

// At first newsObj.getNews is undefined like below
console.log(newsObj.getNews);

// So you need to do like below
if (typeof newsObj.getNews !== "undefined") {
  latestNews = newsObj.getNews.concat(resNews.articles);
  newsObj.getNews = latestNews;
} else {
  newsObj.getNews = resNews.articles;
}

console.log(newsObj.getNews);

// New news
resNews.articles = [{id: 3}, {id: 4}];

setTimeout(function () {
  latestNews = newsObj.getNews.concat(resNews.articles);
  newsObj.getNews = latestNews;
  console.log(newsObj.getNews);
}, 1000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...