首页 > 解决方案 > 如何将返回数组的函数转换为 JS 中的数组?

问题描述

我是 JS 新手,我对我的函数在做什么感到非常困惑。我在 App.js 文件中声明了一个函数 getCities,它返回一个数组:

export async function getCities() {
  const options = {
    method: 'GET',
    headers: { 'Content-Type': 'application/json' }
  }
  const getData = await fetch("/api", options);

  const cities = await getData.json();

  console.log(cities[0]);
  return cities;
}

我已将 getCities 导入另一个文件,并尝试将此函数用作数组以在 React Select 下拉菜单中填充我的选项。

console.log(Array.from(getCities));
console.log(Array.from(getCities()));

上面两个日志都输出空数组(我都试过了,因为我对 JS 语法仍然很模糊)。当我做

console.log(getCities());

我在控制台中看到了这个,我的所有城市都在里面: 在此处输入图像描述

我想我误解了 getCities 函数可以做什么。从我所见,我应该能够执行 getCities[0] 并查看我的第一个城市,但这会返回“未定义”。我想也许我需要使用代码将 getCities 从一系列承诺更改为常规数组

export async function myFunction() {
    const options = await Promise.all(getCities);
    return options;
}

但这给了我错误:未处理的拒绝(TypeError):函数不可迭代(无法读取属性符号(Symbol.iterator))。这是否意味着我设置的 getCities 函数存在问题?请原谅我的漫无边际,我对 JS 还是很陌生,我已经研究了一段时间

标签: javascriptarrayspromise

解决方案


推荐阅读