Перенесите значения из объекта JSON в массив и используйте внешнюю функцию - PullRequest
1 голос
/ 17 октября 2019

Я пишу функцию вызова данных JSON Axios и хочу передать значения из моей функции jJSON для использования вне функции. Могу ли я это сделать в любом случае?

Мой код:

let website_names = `${api}`;
   axios.get(website_names, {
      cancelToken: new CancelToken(function executor(c) {
       api_requests.website_nm = c;
    })
  })
  .then(function(website_name) {
     website_name.data.forEach(d => {
     let yoyo = [];
     yoyo.push(d.element);
     console.log(yoyo);
    });
  }).catch(function(error) {
    console.log(error);
    alert_error(error);
  });

Этот код дает мне:

  • {element: "Google"}
  • {element: "Yahoo"}
  • {element: "Facebook"}
  • {element: "BuzzFeed"}
  • {element: "Cnet"}

Мне нужно yoyo = ["Google", "Yahoo", "Facebook", "BuzzFeed", "Cnet"]

Но мне также нужно использовать yoyo вне функции axios. Мне нужно использовать массив после того, как он сформирован внутри axios.

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Вы можете использовать map для этого:

const getWebsites = () => {
  let website_names = `${api}`;

  return axios
    .get(website_names, {
      cancelToken: new CancelToken(function executor(c) {
        api_requests.website_nm = c;
      })
    })
    .then(function(website_name) {
      return website_name.data.map(d => d.element);
    })
    .catch(function(error) {
      console.log(error);
      alert_error(error);
    });
};

getWebsites().then(yoyo => {
  //you now have the array
});
0 голосов
/ 17 октября 2019

Вы создаете новый массив в каждой итерации, тем самым уничтожая предыдущую. Массив должен быть инициализирован вне цикла forEach:

let yoyo = [];
website_name.data.forEach(d => {
   yoyo.push( d.element );
});
console.log(yoyo);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...