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

时间:2020-05-13 16:45:06

标签: javascript json

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

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

{
  "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"
        }
      ]
    }
  ]
}

1 个答案:

答案 0 :(得分:0)

这是内置的数组函数,可帮助您获得所需的内容。

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

要在JSON data中查找状态对象,可以执行以下操作:

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

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

要查找某个州的城市,请使用上面的findState获取该州的对象,然后Array.prototype.map()将形成一个仅包含城市名称的数组:

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