js 递归获取省市县的数据?

后台返回如下接口

[
  {
    "cityAndPrefecture": [
      {
        "city": "滨海新区",
        "prefecture": []
      }
    ],
    "province": "天津市"
  },
  {
    "cityAndPrefecture": [
      {
        "city": "东营",
        "prefecture": []
      },
      {
        "city": "威海",
        "prefecture": []
      },
      {
        "city": "日照",
        "prefecture": []
      },
      {
        "city": "滨州",
        "prefecture": []
      },
      {
        "city": "潍坊",
        "prefecture": []
      },
      {
        "city": "烟台",
        "prefecture": []
      },
      {
        "city": "青岛",
        "prefecture": []
      }
    ],
    "province": "山东省"
  },
  {
    "cityAndPrefecture": [
      {
        "city": "唐山",
        "prefecture": []
      },
      {
        "city": "沧州",
        "prefecture": []
      },
      {
        "city": "秦皇岛",
        "prefecture": []
      }
    ],
    "province": "河北省"
  },
  {
    "cityAndPrefecture": [
      {
        "city": "丹东",
        "prefecture": []
      },
      {
        "city": "大连",
        "prefecture": []
      },
      {
        "city": "盘锦",
        "prefecture": []
      },
      {
        "city": "营口",
        "prefecture": []
      },
      {
        "city": "葫芦岛",
        "prefecture": []
      },
      {
        "city": "锦州",
        "prefecture": []
      }
    ],
    "province": "辽宁省"
  }
]

有没有什么简单的方法 可以实现 从返回的数据中提取
省[]数组 市[]数组 县[]数组 索引对应就行 做一个三级联动 prefecture是县级市 有的会有返回

市的要求是[[省1的市],[省2的市]]
同样县区 要求是 [[市1的县],[市2的县]]

阅读 2k
1 个回答
let data = [ /* 你的数据 */ ];

let provinces = data.map(item => item.province);

let cities = data.map(item => item.cityAndPrefecture.map(cityItem => cityItem.city));

let prefectures = data.map(item => item.cityAndPrefecture.map(cityItem => cityItem.prefecture));

console.log(provinces); // 省
console.log(cities); // 市
console.log(prefectures); // 县

整合:

let result = data.reduce((acc, item) => {
  acc.provinces.push(item.province);
  acc.cities.push(item.cityAndPrefecture.map(cityItem => cityItem.city));
  acc.prefectures.push(item.cityAndPrefecture.map(cityItem => cityItem.prefecture));
  return acc;
}, { provinces: [], cities: [], prefectures: [] });
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题