JavaScript - Push-объекты внутри объекта в глобальный массив - PullRequest
0 голосов
/ 27 февраля 2019

ОРИГИНАЛЬНЫЙ ВОПРОС

Я пытаюсь написать функцию на JavaScript, которая позволяет загружать статьи из другого источника на другую страницу с использованием XMLHTTPRequest.

Каждая статья представляет собой объект JavaScript, содержащий ссылку, изображение, резюме и т. Д.

Каждый запрос будет получать 5 статей, но я хочу показывать только 4 статьи при каждом нажатии кнопки.Из-за этого я хочу поместить статьи (объекты) в глобальный массив.

Поскольку я довольно новичок в использовании запросов XMLHTTP, я не могу найти, как это сделать.

Все работает, за исключением:

var i;
          for (i = 0; i < newArticles.length; i++) {
            articles.push(newArticles[i]);
          }

newArticles - это объект , содержащий 5 статей (объектов), которые я пытаюсь выдвинуть в глобальный массив под названием article.

Мой код:

    var articles = [];

  document.getElementById("fc-blog-button-loadmore").addEventListener("click", receiveNewArticles);

  function receiveNewArticles() {
   var http = new XMLHttpRequest();
   var url = "thelinktothepagewith5newarticles.json";
   http.onreadystatechange = function() {
        if(http.readyState == 4 && http.status == 200) {
            var newObj = JSON.parse(http.responseText);
          var newArticles = (newObj.blog.articles);
          console.log(newObj);
          console.log(newArticles);

          var i;
          for (i = 0; i < newArticles.length; i++) {
            articles.push(newArticles[i]);
          }

          console.log(articles);
        }
    }
    http.open("GET", url, true);
    http.send();
  }

решено

После полезных комментариев мой код в настоящее время выглядит так:

var articles = [];

  document.getElementById("fc-blog-button-loadmore").addEventListener("click", receiveNewArticles);

  function receiveNewArticles() {
   var http = new XMLHttpRequest();
   var url = "http://freshcotton-dev.webshopapp.com/nl/blogs/blog/page2.html?format=json";
   http.onreadystatechange = function() {
        if(http.readyState == 4 && http.status == 200) {
            var newObj = JSON.parse(http.responseText);
          var newArticles = (newObj.blog.articles);
          console.log(newObj);
          console.log(newArticles);

          articles.push(...Object.values(newArticles)) 

          console.log(articles);
        }
    }
    http.open("GET", url, true);
    http.send();
  }

Проблема была решена!

1 Ответ

0 голосов
/ 27 февраля 2019

Вы можете решить проблему, просто воспользовавшись [оператором распространения] [1] ...

articles.push(...Object.values(newArticles));


  [1]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...