javascript 在Fetch .then中使用for-each循环来移除索引数组元素并检索子元素

qpgpyjmq  于 2022-11-20  发布在  Java
关注(0)|答案(1)|浏览(116)

我正在学习javascript,尝试一些东西,但目前有一个问题。
本质上-API端点返回索引元素,并且在索引中,每个索引元素中的数据都具有相同的结构。
例如,它看起来像这样:
0-1000
当我把它展开时,它们是这样的:0:参数_1:1参数_2:2 1:参数_1:3参数_2:4 2:参数_1:5参数_2:6......依此类推。Data structure
问题是--当我运行下面的代码时,我可以向控制台输出顶级数组,该数组返回名为0、1、2、3等的数组。或者,我也可以给予一个数组元素,然后说console.log(array[45])。
但是我想做的是执行foreach,删除顶层索引,如果这有意义的话,并且只从每个子数组元素返回相同的参数。例如,只将每个param_1返回到一个新数组或控制台日志中。
我的问题是,我尝试了很多方法,但我对所有复杂性的理解还不够,无法使其正常工作。我尝试了.map或for-each,但我认为存在无法实现承诺等问题。我也不想在整个API获取过程中执行for-each,它将返回原始数组。
下面的代码是我正在使用的,什么是有效的,我将在下面添加伪代码来说明我的意图。
正在工作:
`

export const getWeatherData = (location) => {
  fetch(url, opts)
    .then(function (response) {
      document.querySelector(".loading").textContent = "";
      return response.json();
    })
    .then(function (response) {
      return response;
    })
    .then(function (response) {

      const weatherData = {
        name: response.data.blah
      };
      console.log(weatherData.name);
      return weatherData;
    })
    .then(function (weatherData) {
      displayWeatherData(weatherData);
    })
    .catch(function (err) {
      err = displayError();
    });
};

`
伪代码:

export const getWeatherData = (location) => {
  fetch(url, opts)
    .then(function (response) {
      document.querySelector(".loading").textContent = "";
      return response.json();
    })
    .then(function (response) {
      return response;
    })
    .then(function (response) {

      for each (item in response){
       add item.data.blah.param_1 to newarray.
       } 

      const weatherData = newarray

      console.log(weatherData);
      return weatherData;
    })
    .then(function (weatherData) {
      displayWeatherData(weatherData);
    })
    .catch(function (err) {
      err = displayError();
    });
};

我希望这是有意义的,任何问题等,或如果你需要澄清,我会尽快回复。

oxiaedzo

oxiaedzo1#

const newarray = response.map((item) => {
  return item.data.blah.param_1;
});

这应该可以解决你的问题。如果有子数组你可以像这样使用forEach

const newarray = [];

response.forEach((item) => {
  item.data.blah.forEach((subItem) => {
    newarray.push(subItem.param_1);
  });
});

console.log(newarray);

相关问题