可以在代码中加入一个功能,将县的代码也放进城市中。具体的做法是在遍历'county'时,根据县的代码找到对应的城市,然后将县添加到城市的'children'中。

修改后的代码如下:

function useCascaderAreaData() {
  const {
    city_list: city,
    county_list: county,
    province_list: province
  } = areaList;
  const provinceMap = /* @__PURE__ */ new Map();
  Object.keys(province).forEach((code) => {
    provinceMap.set(code.slice(0, 2), makeOption(province[code], code, []));
  });
  const cityMap = /* @__PURE__ */ new Map();
  Object.keys(city).forEach((code) => {
    const option = makeOption(city[code], code, []);
    cityMap.set(code.slice(0, 4), option);
    const province2 = provinceMap.get(code.slice(0, 2));
    if (province2) {
      province2.children.push(option);
    }
  });
  Object.keys(county).forEach((code) => {
    const city2 = cityMap.get(code.slice(0, 4));
    if (city2) {
      city2.children.push(makeOption(county[code], code));
    } else {
      // 如果找不到对应的城市,则将县添加到省份的'children'中
      const province3 = provinceMap.get(code.slice(0, 2));
      if (province3) {
        province3.children.push(makeOption(county[code], code));
      }
    }
  });
  return Array.from(provinceMap.values());
}

这样,如果有对应的城市代码,县将会被添加到城市的'children'中;如果找不到对应的城市代码,县将会被添加到省份的'children'中。


原文地址: http://www.cveoy.top/t/topic/pMrJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录