繁体   English   中英

查找一个国家/州的所有城市或从 JSON 数据中查找给定城市的州/国家

[英]Find all cities in a country/state or finding the state/country given a city from JSON data

我在 JSON 中有县/州/城市数据(如下所示)。 我想找到给定州/国家和城市的所有城市,需要找到 state 和国家。

列出国家/地区的所有城市:美国
列出各州的所有城市:阿拉巴马州
列出 state 和城市的国家:亚当斯维尔

{
  "country": "usa",
  "states": [
    {
      "name": "Alabama",
      "state_code": "AL",
      "cities": [
        {
          "name": "Abbeville",
          "latitude": "31.57184000",
          "longitude": "-85.25049000"
        },
        {
          "name": "Adamsville",
          "latitude": "33.60094000",
          "longitude": "-86.95611000"
        }
      ]
    },
    {
      "name": "Alaska",
      "state_code": "AK",
      "cities": [
        {
          "name": "Akutan",
          "latitude": "54.13350000",
          "longitude": "-165.77686000"
        },
        {
          "name": "Aleutians East Borough",
          "latitude": "54.85000000",
          "longitude": "-163.41667000"
        }
      ]
    }
  ]
}

这里有内置的 Array 函数,可以帮助你得到你想要的。

Array.prototype.find() - 返回满足所提供测试的数组中第一个元素的值。

要在 JSON data中找到 state object,您可以执行以下操作:

const findState = (name) => data.states.find(state => state.name === name);

let alaska = findState('Alaska');
// { "name"; "Alaska", "state_code": "AK", "cities": [...] }

要在 state 中查找城市,请使用上述findState获取 state object,然后Array.prototype.map()将形成一个仅包含城市名称的数组:

let alaska = findState('Alaska');
let citiesInAlaska = alaska.cities.map(city => city.name);
// [ "Akutan", "Aleutians East Borough" ]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM