从 Airports.JSON 查询 Airport Lat 和 long react本机

IT技术 javascript json reactjs react-native file
2021-05-18 10:49:24

我试图从我这样导入的 JSON 文件中查询。你可以在这里找到文件

import * as airportData from '../../Data/airports.json'; 

我将它放入一个变量中,并从第一个对象中获得完全正确的纬度。

 let arr = airportData;

 let airportIcao = Object.keys(arr)[0];

 let airportLat = arr[airportIcao]['lat']; 

我有很多对象可以从中获取纬度和经度,所以我尝试了一个 for 循环

  let arr = airportData;
     let airportLat;

     var i;
     for (i=0; i < arr.length; i++) {
      let airportIcao = Object.keys(arr)[i];
      airportLat = arr[airportIcao]['lat'];

    }

我的 console.log(airportLat) 帮助未定义将不胜感激。

1个回答

问题

您只有一个airportLat值,因此当您遍历机场数据并airportLat每次设置时,只有最后一个迭代对象可以设置该airportLat值。如果airportLat在命中 for 循环后仍然未定义,那么我怀疑数组长度实际上是 0,即您正在处理一个空数组。

解决方案

如果您只是想创建一个机场纬度/经度值的数组,那么我建议将数组值映射到具有lat&lon属性的对象如果airportData实际上是一个空对象,那么结果数组也仍然是空的。

Object.values(airportData).map(({ lat, lon }) => ({ lat, lon }))

const getData = async () => {
  const data = await fetch(
    "https://raw.githubusercontent.com/mwgg/Airports/master/airports.json"
  ).then((res) => res.json());
  
  const latLongArray = Object.values(data)
    .slice(-10) // <-- grabbing last 10 for brevity
    .map(({ lat, lon }) => ({ lat, lon }));
    
  console.log(latLongArray);
};

getData();