如何对省市区数组数据,匹配已选择数据并删除

先看下数据

  1. 已选择的省市区部分数据
 let SelectAreaData = [
                    {
                        id: 2292,
                        provinceName: '广西',//不许全删广西省,因为选择了省下的部分城市
                        selected: true,
                        city: [
                            {
                                id: 2307,
                                cityName: '柳州市', //需删除柳州市及下面的级,因为没有district,或者district为null
                                selected: true
                            },
                            {
                                id: 2293,
                                cityName: "南宁市",//不可全部删除南宁市,因为下级的district没选完
                                selected: true,
                                district: [
                                    {
                                        id: 2295,
                                        districtName: "兴宁区", //需删除
                                        selected: true
                                    },
                                    {
                                        id: 2296,
                                        selected: true,
                                        districtName: "青秀区"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        id: 39,
                        provinceName: "河北",//河北省全删,因为没有city,或者city为null
                        selected: true
                    }
                ]

全部的省市区模型

let AreaData = [
  {
    "id": 1,
    "sheng": "11",
    "di": "00",
    "xian": "00",
    "provinceName": "北京",
    "provinceId": "110000",
    "selected": false,
    "city": [
      {
        "id": 2,
        "sheng": "11",
        "di": "01",
        "xian": "00",
        "cityId": "110100",
        "cityName": "北京市",
        "selected": false,
        "showBlue": false,
        "district": [
          {
            "id": 3,
            "sheng": "11",
            "di": "01",
            "xian": "01",
            "districtName": "东城区",
            "districtId": "110101",
            "selected": false
          },
          {
            "id": 4,
            "sheng": "11",
            "di": "01",
            "xian": "02",
            "districtName": "西城区",
            "districtId": "110102",
            "selected": false
          },
          {
            "id": 5,
            "sheng": "11",
            "di": "01",
            "xian": "05",
            "districtName": "朝阳区",
            "districtId": "110105",
            "selected": false
          },
          {
            "id": 6,
            "sheng": "11",
            "di": "01",
            "xian": "06",
            "districtName": "丰台区",
            "districtId": "110106",
            "selected": false
          },
          {
            "id": 7,
            "sheng": "11",
            "di": "01",
            "xian": "07",
            "districtName": "石景山区",
            "districtId": "110107",
            "selected": false
          },
          {
            "id": 8,
            "sheng": "11",
            "di": "01",
            "xian": "08",
            "districtName": "海淀区",
            "districtId": "110108",
            "selected": false
          },
          {
            "id": 9,
            "sheng": "11",
            "di": "01",
            "xian": "09",
            "districtName": "门头沟区",
            "districtId": "110109",
            "selected": false
          },
          {
            "id": 10,
            "sheng": "11",
            "di": "01",
            "xian": "11",
            "districtName": "房山区",
            "districtId": "110111",
            "selected": false
          },
          {
            "id": 11,
            "sheng": "11",
            "di": "01",
            "xian": "12",
            "districtName": "通州区",
            "districtId": "110112",
            "selected": false
          },
          {
            "id": 12,
            "sheng": "11",
            "di": "01",
            "xian": "13",
            "districtName": "顺义区",
            "districtId": "110113",
            "selected": false
          },
          {
            "id": 13,
            "sheng": "11",
            "di": "01",
            "xian": "14",
            "districtName": "昌平区",
            "districtId": "110114",
            "selected": false
          },
          {
            "id": 14,
            "sheng": "11",
            "di": "01",
            "xian": "15",
            "districtName": "大兴区",
            "districtId": "110115",
            "selected": false
          },
          {
            "id": 15,
            "sheng": "11",
            "di": "01",
            "xian": "16",
            "districtName": "怀柔区",
            "districtId": "110116",
            "selected": false
          },
          {
            "id": 16,
            "sheng": "11",
            "di": "01",
            "xian": "17",
            "districtName": "平谷区",
            "districtId": "110117",
            "selected": false
          },
          {
            "id": 3513,
            "sheng": "11",
            "di": "01",
            "xian": "03",
            "districtName": "崇文区",
            "districtId": "110103",
            "selected": false
          },
          {
            "id": 3514,
            "sheng": "11",
            "di": "01",
            "xian": "04",
            "districtName": "宣武区",
            "districtId": "110104",
            "selected": false
          }
        ]
      },
      {
        "id": 17,
        "sheng": "11",
        "di": "02",
        "xian": "00",
        "cityId": "110200",
        "cityName": "县",
        "selected": false,
        "showBlue": false,
        "district": [
          {
            "id": 18,
            "sheng": "11",
            "di": "02",
            "xian": "28",
            "districtName": "密云县",
            "districtId": "110228",
            "selected": false
          },
          {
            "id": 19,
            "sheng": "11",
            "di": "02",
            "xian": "29",
            "districtName": "延庆县",
            "districtId": "110229",
            "selected": false
          }
        ]
      }
    ]
  },
  {
    "id": 2292,
    "sheng": "45",
    "di": "00",
    "xian": "00",
    "provinceName": "广西",
    "provinceId": "450000",
    "selected": false,
    "city": [
      {
        "id": 2293,
        "sheng": "45",
        "di": "01",
        "xian": "00",
        "cityId": "450100",
        "cityName": "南宁市",
        "selected": false,
        "showBlue": false,
        "district": [
          {
            "id": 2295,
            "sheng": "45",
            "di": "01",
            "xian": "02",
            "districtName": "兴宁区",
            "districtId": "450102",
            "selected": false
          },
          {
            "id": 2296,
            "sheng": "45",
            "di": "01",
            "xian": "03",
            "districtName": "青秀区",
            "districtId": "450103",
            "selected": false
          },
          {
            "id": 2297,
            "sheng": "45",
            "di": "01",
            "xian": "05",
            "districtName": "江南区",
            "districtId": "450105",
            "selected": false
          },
          {
            "id": 2298,
            "sheng": "45",
            "di": "01",
            "xian": "07",
            "districtName": "西乡塘区",
            "districtId": "450107",
            "selected": false
          },
          {
            "id": 2299,
            "sheng": "45",
            "di": "01",
            "xian": "08",
            "districtName": "良庆区",
            "districtId": "450108",
            "selected": false
          },
          {
            "id": 2300,
            "sheng": "45",
            "di": "01",
            "xian": "09",
            "districtName": "邕宁区",
            "districtId": "450109",
            "selected": false
          },
          {
            "id": 2301,
            "sheng": "45",
            "di": "01",
            "xian": "22",
            "districtName": "武鸣县",
            "districtId": "450122",
            "selected": false
          },
          {
            "id": 2302,
            "sheng": "45",
            "di": "01",
            "xian": "23",
            "districtName": "隆安县",
            "districtId": "450123",
            "selected": false
          },
          {
            "id": 2303,
            "sheng": "45",
            "di": "01",
            "xian": "24",
            "districtName": "马山县",
            "districtId": "450124",
            "selected": false
          },
          {
            "id": 2304,
            "sheng": "45",
            "di": "01",
            "xian": "25",
            "districtName": "上林县",
            "districtId": "450125",
            "selected": false
          },
          {
            "id": 2305,
            "sheng": "45",
            "di": "01",
            "xian": "26",
            "districtName": "宾阳县",
            "districtId": "450126",
            "selected": false
          },
          {
            "id": 2306,
            "sheng": "45",
            "di": "01",
            "xian": "27",
            "districtName": "横县",
            "districtId": "450127",
            "selected": false
          }
        ]
      },
      {
        "id": 2307,
        "sheng": "45",
        "di": "02",
        "xian": "00",
        "cityId": "450200",
        "cityName": "柳州市",
        "selected": false,
        "showBlue": false,
        "district": [
          {
            "id": 2309,
            "sheng": "45",
            "di": "02",
            "xian": "02",
            "districtName": "城中区",
            "districtId": "450202",
            "selected": false
          },
          {
            "id": 2310,
            "sheng": "45",
            "di": "02",
            "xian": "03",
            "districtName": "鱼峰区",
            "districtId": "450203",
            "selected": false
          },
          {
            "id": 2311,
            "sheng": "45",
            "di": "02",
            "xian": "04",
            "districtName": "柳南区",
            "districtId": "450204",
            "selected": false
          },
          {
            "id": 2312,
            "sheng": "45",
            "di": "02",
            "xian": "05",
            "districtName": "柳北区",
            "districtId": "450205",
            "selected": false
          },
          {
            "id": 2313,
            "sheng": "45",
            "di": "02",
            "xian": "21",
            "districtName": "柳江县",
            "districtId": "450221",
            "selected": false
          },
          {
            "id": 2314,
            "sheng": "45",
            "di": "02",
            "xian": "22",
            "districtName": "柳城县",
            "districtId": "450222",
            "selected": false
          },
          {
            "id": 2315,
            "sheng": "45",
            "di": "02",
            "xian": "23",
            "districtName": "鹿寨县",
            "districtId": "450223",
            "selected": false
          },
          {
            "id": 2316,
            "sheng": "45",
            "di": "02",
            "xian": "24",
            "districtName": "融安县",
            "districtId": "450224",
            "selected": false
          },
          {
            "id": 2317,
            "sheng": "45",
            "di": "02",
            "xian": "25",
            "districtName": "融水苗族自治县",
            "districtId": "450225",
            "selected": false
          },
          {
            "id": 2318,
            "sheng": "45",
            "di": "02",
            "xian": "26",
            "districtName": "三江侗族自治县",
            "districtId": "450226",
            "selected": false
          }
        ]
      },
      {
        "id": 2319,
        "sheng": "45",
        "di": "03",
        "xian": "00",
        "cityId": "450300",
        "cityName": "桂林市",
        "selected": false,
        "showBlue": false,
        "district": [
          {
            "id": 2321,
            "sheng": "45",
            "di": "03",
            "xian": "02",
            "districtName": "秀峰区",
            "districtId": "450302",
            "selected": false
          },
          {
            "id": 2322,
            "sheng": "45",
            "di": "03",
            "xian": "03",
            "districtName": "叠彩区",
            "districtId": "450303",
            "selected": false
          },
          {
            "id": 2323,
            "sheng": "45",
            "di": "03",
            "xian": "04",
            "districtName": "象山区",
            "districtId": "450304",
            "selected": false
          },
          {
            "id": 2324,
            "sheng": "45",
            "di": "03",
            "xian": "05",
            "districtName": "七星区",
            "districtId": "450305",
            "selected": false
          },
          {
            "id": 2325,
            "sheng": "45",
            "di": "03",
            "xian": "11",
            "districtName": "雁山区",
            "districtId": "450311",
            "selected": false
          },
          {
            "id": 2326,
            "sheng": "45",
            "di": "03",
            "xian": "12",
            "districtName": "临桂区",
            "districtId": "450312",
            "selected": false
          },
          {
            "id": 2327,
            "sheng": "45",
            "di": "03",
            "xian": "21",
            "districtName": "阳朔县",
            "districtId": "450321",
            "selected": false
          },
          {
            "id": 2328,
            "sheng": "45",
            "di": "03",
            "xian": "23",
            "districtName": "灵川县",
            "districtId": "450323",
            "selected": false
          },
          {
            "id": 2329,
            "sheng": "45",
            "di": "03",
            "xian": "24",
            "districtName": "全州县",
            "districtId": "450324",
            "selected": false
          },
          {
            "id": 2330,
            "sheng": "45",
            "di": "03",
            "xian": "25",
            "districtName": "兴安县",
            "districtId": "450325",
            "selected": false
          },
          {
            "id": 2331,
            "sheng": "45",
            "di": "03",
            "xian": "26",
            "districtName": "永福县",
            "districtId": "450326",
            "selected": false
          },
          {
            "id": 2332,
            "sheng": "45",
            "di": "03",
            "xian": "27",
            "districtName": "灌阳县",
            "districtId": "450327",
            "selected": false
          },
          {
            "id": 2333,
            "sheng": "45",
            "di": "03",
            "xian": "28",
            "districtName": "龙胜各族自治县",
            "districtId": "450328",
            "selected": false
          },
          {
            "id": 2334,
            "sheng": "45",
            "di": "03",
            "xian": "29",
            "districtName": "资源县",
            "districtId": "450329",
            "selected": false
          },
          {
            "id": 2335,
            "sheng": "45",
            "di": "03",
            "xian": "30",
            "districtName": "平乐县",
            "districtId": "450330",
            "selected": false
          },
          {
            "id": 2336,
            "sheng": "45",
            "di": "03",
            "xian": "31",
            "districtName": "荔浦县",
            "districtId": "450331",
            "selected": false
          },
          {
            "id": 2337,
            "sheng": "45",
            "di": "03",
            "xian": "32",
            "districtName": "恭城瑶族自治县",
            "districtId": "450332",
            "selected": false
          }
        ]
      },
      {
        "id": 2338,
        "sheng": "45",
        "di": "04",
        "xian": "00",
        "cityId": "450400",
        "cityName": "梧州市",
        "selected": false,
        "showBlue": false,
        "district": [
          {
            "id": 2340,
            "sheng": "45",
            "di": "04",
            "xian": "03",
            "districtName": "万秀区",
            "districtId": "450403",
            "selected": false
          },
          {
            "id": 2341,
            "sheng": "45",
            "di": "04",
            "xian": "05",
            "districtName": "长洲区",
            "districtId": "450405",
            "selected": false
          },
          {
            "id": 2342,
            "sheng": "45",
            "di": "04",
            "xian": "06",
            "districtName": "龙圩区",
            "districtId": "450406",
            "selected": false
          },
          {
            "id": 2343,
            "sheng": "45",
            "di": "04",
            "xian": "21",
            "districtName": "苍梧县",
            "districtId": "450421",
            "selected": false
          },
          {
            "id": 2344,
            "sheng": "45",
            "di": "04",
            "xian": "22",
            "districtName": "藤县",
            "districtId": "450422",
            "selected": false
          },
          {
            "id": 2345,
            "sheng": "45",
            "di": "04",
            "xian": "23",
            "districtName": "蒙山县",
            "districtId": "450423",
            "selected": false
          },
          {
            "id": 2346,
            "sheng": "45",
            "di": "04",
            "xian": "81",
            "districtName": "岑溪市",
            "districtId": "450481",
            "selected": false
          },
          {
            "id": 3668,
            "sheng": "45",
            "di": "04",
            "xian": "82",
            "districtName": "蝶山区",
            "districtId": "450482",
            "selected": false
          }
        ]
      },
      {
        "id": 2347,
        "sheng": "45",
        "di": "05",
        "xian": "00",
        "cityId": "450500",
        "cityName": "北海市",
        "selected": false,
        "showBlue": false,
        "district": [
          {
            "id": 2349,
            "sheng": "45",
            "di": "05",
            "xian": "02",
            "districtName": "海城区",
            "districtId": "450502",
            "selected": false
          },
          {
            "id": 2350,
            "sheng": "45",
            "di": "05",
            "xian": "03",
            "districtName": "银海区",
            "districtId": "450503",
            "selected": false
          },
          {
            "id": 2351,
            "sheng": "45",
            "di": "05",
            "xian": "12",
            "districtName": "铁山港区",
            "districtId": "450512",
            "selected": false
          },
          {
            "id": 2352,
            "sheng": "45",
            "di": "05",
            "xian": "21",
            "districtName": "合浦县",
            "districtId": "450521",
            "selected": false
          }
        ]
      },
      {
        "id": 2353,
        "sheng": "45",
        "di": "06",
        "xian": "00",
        "cityId": "450600",
        "cityName": "防城港市",
        "selected": false,
        "showBlue": false,
        "district": [
          {
            "id": 2355,
            "sheng": "45",
            "di": "06",
            "xian": "02",
            "districtName": "港口区",
            "districtId": "450602",
            "selected": false
          },
          {
            "id": 2356,
            "sheng": "45",
            "di": "06",
            "xian": "03",
            "districtName": "防城区",
            "districtId": "450603",
            "selected": false
          },
          {
            "id": 2357,
            "sheng": "45",
            "di": "06",
            "xian": "21",
            "districtName": "上思县",
            "districtId": "450621",
            "selected": false
          },
          {
            "id": 2358,
            "sheng": "45",
            "di": "06",
            "xian": "81",
            "districtName": "东兴市",
            "districtId": "450681",
            "selected": false
          }
        ]
      },
      {
        "id": 2359,
        "sheng": "45",
        "di": "07",
        "xian": "00",
        "cityId": "450700",
        "cityName": "钦州市",
        "selected": false,
        "showBlue": false,
        "district": [
          {
            "id": 2361,
            "sheng": "45",
            "di": "07",
            "xian": "02",
            "districtName": "钦南区",
            "districtId": "450702",
            "selected": false
          },
          {
            "id": 2362,
            "sheng": "45",
            "di": "07",
            "xian": "03",
            "districtName": "钦北区",
            "districtId": "450703",
            "selected": false
          },
          {
            "id": 2363,
            "sheng": "45",
            "di": "07",
            "xian": "21",
            "districtName": "灵山县",
            "districtId": "450721",
            "selected": false
          },
          {
            "id": 2364,
            "sheng": "45",
            "di": "07",
            "xian": "22",
            "districtName": "浦北县",
            "districtId": "450722",
            "selected": false
          }
        ]
      },
      {
        "id": 2365,
        "sheng": "45",
        "di": "08",
        "xian": "00",
        "cityId": "450800",
        "cityName": "贵港市",
        "selected": false,
        "showBlue": false,
        "district": [
          {
            "id": 2367,
            "sheng": "45",
            "di": "08",
            "xian": "02",
            "districtName": "港北区",
            "districtId": "450802",
            "selected": false
          },
          {
            "id": 2368,
            "sheng": "45",
            "di": "08",
            "xian": "03",
            "districtName": "港南区",
            "districtId": "450803",
            "selected": false
          },
          {
            "id": 2369,
            "sheng": "45",
            "di": "08",
            "xian": "04",
            "districtName": "覃塘区",
            "districtId": "450804",
            "selected": false
          },
          {
            "id": 2370,
            "sheng": "45",
            "di": "08",
            "xian": "21",
            "districtName": "平南县",
            "districtId": "450821",
            "selected": false
          },
          {
            "id": 2371,
            "sheng": "45",
            "di": "08",
            "xian": "81",
            "districtName": "桂平市",
            "districtId": "450881",
            "selected": false
          }
        ]
      },
      {
        "id": 2372,
        "sheng": "45",
        "di": "09",
        "xian": "00",
        "cityId": "450900",
        "cityName": "玉林市",
        "selected": false,
        "showBlue": false,
        "district": [
          {
            "id": 2374,
            "sheng": "45",
            "di": "09",
            "xian": "02",
            "districtName": "玉州区",
            "districtId": "450902",
            "selected": false
          },
          {
            "id": 2375,
            "sheng": "45",
            "di": "09",
            "xian": "03",
            "districtName": "福绵区",
            "districtId": "450903",
            "selected": false
          },
          {
            "id": 2376,
            "sheng": "45",
            "di": "09",
            "xian": "21",
            "districtName": "容县",
            "districtId": "450921",
            "selected": false
          },
          {
            "id": 2377,
            "sheng": "45",
            "di": "09",
            "xian": "22",
            "districtName": "陆川县",
            "districtId": "450922",
            "selected": false
          },
          {
            "id": 2378,
            "sheng": "45",
            "di": "09",
            "xian": "23",
            "districtName": "博白县",
            "districtId": "450923",
            "selected": false
          },
          {
            "id": 2379,
            "sheng": "45",
            "di": "09",
            "xian": "24",
            "districtName": "兴业县",
            "districtId": "450924",
            "selected": false
          },
          {
            "id": 2380,
            "sheng": "45",
            "di": "09",
            "xian": "81",
            "districtName": "北流市",
            "districtId": "450981",
            "selected": false
          }
        ]
      },
      {
        "id": 2381,
        "sheng": "45",
        "di": "10",
        "xian": "00",
        "cityId": "451000",
        "cityName": "百色市",
        "selected": false,
        "showBlue": false,
        "district": [
          {
            "id": 2383,
            "sheng": "45",
            "di": "10",
            "xian": "02",
            "districtName": "右江区",
            "districtId": "451002",
            "selected": false
          },
          {
            "id": 2384,
            "sheng": "45",
            "di": "10",
            "xian": "21",
            "districtName": "田阳县",
            "districtId": "451021",
            "selected": false
          },
          {
            "id": 2385,
            "sheng": "45",
            "di": "10",
            "xian": "22",
            "districtName": "田东县",
            "districtId": "451022",
            "selected": false
          },
          {
            "id": 2386,
            "sheng": "45",
            "di": "10",
            "xian": "23",
            "districtName": "平果县",
            "districtId": "451023",
            "selected": false
          },
          {
            "id": 2387,
            "sheng": "45",
            "di": "10",
            "xian": "24",
            "districtName": "德保县",
            "districtId": "451024",
            "selected": false
          },
          {
            "id": 2388,
            "sheng": "45",
            "di": "10",
            "xian": "25",
            "districtName": "靖西县",
            "districtId": "451025",
            "selected": false
          },
          {
            "id": 2389,
            "sheng": "45",
            "di": "10",
            "xian": "26",
            "districtName": "那坡县",
            "districtId": "451026",
            "selected": false
          },
          {
            "id": 2390,
            "sheng": "45",
            "di": "10",
            "xian": "27",
            "districtName": "凌云县",
            "districtId": "451027",
            "selected": false
          },
          {
            "id": 2391,
            "sheng": "45",
            "di": "10",
            "xian": "28",
            "districtName": "乐业县",
            "districtId": "451028",
            "selected": false
          },
          {
            "id": 2392,
            "sheng": "45",
            "di": "10",
            "xian": "29",
            "districtName": "田林县",
            "districtId": "451029",
            "selected": false
          },
          {
            "id": 2393,
            "sheng": "45",
            "di": "10",
            "xian": "30",
            "districtName": "西林县",
            "districtId": "451030",
            "selected": false
          },
          {
            "id": 2394,
            "sheng": "45",
            "di": "10",
            "xian": "31",
            "districtName": "隆林各族自治县",
            "districtId": "451031",
            "selected": false
          }
        ]
      },
      {
        "id": 2395,
        "sheng": "45",
        "di": "11",
        "xian": "00",
        "cityId": "451100",
        "cityName": "贺州市",
        "selected": false,
        "showBlue": false,
        "district": [
          {
            "id": 2397,
            "sheng": "45",
            "di": "11",
            "xian": "02",
            "districtName": "八步区",
            "districtId": "451102",
            "selected": false
          },
          {
            "id": 2398,
            "sheng": "45",
            "di": "11",
            "xian": "21",
            "districtName": "昭平县",
            "districtId": "451121",
            "selected": false
          },
          {
            "id": 2399,
            "sheng": "45",
            "di": "11",
            "xian": "22",
            "districtName": "钟山县",
            "districtId": "451122",
            "selected": false
          },
          {
            "id": 2400,
            "sheng": "45",
            "di": "11",
            "xian": "23",
            "districtName": "富川瑶族自治县",
            "districtId": "451123",
            "selected": false
          },
          {
            "id": 3669,
            "sheng": "45",
            "di": "11",
            "xian": "80",
            "districtName": "平桂管理区",
            "districtId": "451180",
            "selected": false
          }
        ]
      },
      {
        "id": 2401,
        "sheng": "45",
        "di": "12",
        "xian": "00",
        "cityId": "451200",
        "cityName": "河池市",
        "selected": false,
        "showBlue": false,
        "district": [
          {
            "id": 2403,
            "sheng": "45",
            "di": "12",
            "xian": "02",
            "districtName": "金城江区",
            "districtId": "451202",
            "selected": false
          },
          {
            "id": 2404,
            "sheng": "45",
            "di": "12",
            "xian": "21",
            "districtName": "南丹县",
            "districtId": "451221",
            "selected": false
          },
          {
            "id": 2405,
            "sheng": "45",
            "di": "12",
            "xian": "22",
            "districtName": "天峨县",
            "districtId": "451222",
            "selected": false
          },
          {
            "id": 2406,
            "sheng": "45",
            "di": "12",
            "xian": "23",
            "districtName": "凤山县",
            "districtId": "451223",
            "selected": false
          },
          {
            "id": 2407,
            "sheng": "45",
            "di": "12",
            "xian": "24",
            "districtName": "东兰县",
            "districtId": "451224",
            "selected": false
          },
          {
            "id": 2408,
            "sheng": "45",
            "di": "12",
            "xian": "25",
            "districtName": "罗城仫佬族自治县",
            "districtId": "451225",
            "selected": false
          },
          {
            "id": 2409,
            "sheng": "45",
            "di": "12",
            "xian": "26",
            "districtName": "环江毛南族自治县",
            "districtId": "451226",
            "selected": false
          },
          {
            "id": 2410,
            "sheng": "45",
            "di": "12",
            "xian": "27",
            "districtName": "巴马瑶族自治县",
            "districtId": "451227",
            "selected": false
          },
          {
            "id": 2411,
            "sheng": "45",
            "di": "12",
            "xian": "28",
            "districtName": "都安瑶族自治县",
            "districtId": "451228",
            "selected": false
          },
          {
            "id": 2412,
            "sheng": "45",
            "di": "12",
            "xian": "29",
            "districtName": "大化瑶族自治县",
            "districtId": "451229",
            "selected": false
          },
          {
            "id": 2413,
            "sheng": "45",
            "di": "12",
            "xian": "81",
            "districtName": "宜州市",
            "districtId": "451281",
            "selected": false
          }
        ]
      },
      {
        "id": 2414,
        "sheng": "45",
        "di": "13",
        "xian": "00",
        "cityId": "451300",
        "cityName": "来宾市",
        "selected": false,
        "showBlue": false,
        "district": [
          {
            "id": 2416,
            "sheng": "45",
            "di": "13",
            "xian": "02",
            "districtName": "兴宾区",
            "districtId": "451302",
            "selected": false
          },
          {
            "id": 2417,
            "sheng": "45",
            "di": "13",
            "xian": "21",
            "districtName": "忻城县",
            "districtId": "451321",
            "selected": false
          },
          {
            "id": 2418,
            "sheng": "45",
            "di": "13",
            "xian": "22",
            "districtName": "象州县",
            "districtId": "451322",
            "selected": false
          },
          {
            "id": 2419,
            "sheng": "45",
            "di": "13",
            "xian": "23",
            "districtName": "武宣县",
            "districtId": "451323",
            "selected": false
          },
          {
            "id": 2420,
            "sheng": "45",
            "di": "13",
            "xian": "24",
            "districtName": "金秀瑶族自治县",
            "districtId": "451324",
            "selected": false
          },
          {
            "id": 2421,
            "sheng": "45",
            "di": "13",
            "xian": "81",
            "districtName": "合山市",
            "districtId": "451381",
            "selected": false
          }
        ]
      },
      {
        "id": 2422,
        "sheng": "45",
        "di": "14",
        "xian": "00",
        "cityId": "451400",
        "cityName": "崇左市",
        "selected": false,
        "showBlue": false,
        "district": [
          {
            "id": 2424,
            "sheng": "45",
            "di": "14",
            "xian": "02",
            "districtName": "江州区",
            "districtId": "451402",
            "selected": false
          },
          {
            "id": 2425,
            "sheng": "45",
            "di": "14",
            "xian": "21",
            "districtName": "扶绥县",
            "districtId": "451421",
            "selected": false
          },
          {
            "id": 2426,
            "sheng": "45",
            "di": "14",
            "xian": "22",
            "districtName": "宁明县",
            "districtId": "451422",
            "selected": false
          },
          {
            "id": 2427,
            "sheng": "45",
            "di": "14",
            "xian": "23",
            "districtName": "龙州县",
            "districtId": "451423",
            "selected": false
          },
          {
            "id": 2428,
            "sheng": "45",
            "di": "14",
            "xian": "24",
            "districtName": "大新县",
            "districtId": "451424",
            "selected": false
          },
          {
            "id": 2429,
            "sheng": "45",
            "di": "14",
            "xian": "25",
            "districtName": "天等县",
            "districtId": "451425",
            "selected": false
          },
          {
            "id": 2430,
            "sheng": "45",
            "di": "14",
            "xian": "81",
            "districtName": "凭祥市",
            "districtId": "451481",
            "selected": false
          }
        ]
      }
    ]
  }//省略
]

2.对比SelectAreaData 和 AreaData,从AreaData中删除包含SelectAreaData的数据

阅读 2.5k
1 个回答

为了方便查找,建立一个 id => node 的映射表,
为了找父级(因为子级删除之后要检查父级是否需要删除)建立一个向上的连接关系

然后在指定一个城市或下级地区 ID 之后,

  • 通过 id 从映射表找到该节点
  • 通过节点上添加的 parentId(父级关系)找到对应的父级节点
  • 从父级节点删除指定 ID 的子节点
  • 检查父级节点的子节点数量
  • 如果为 0 递归删除该父级节点

下面是建映射表和向上关系的代码,其它的代码先自己想想


function prepare(data) {
    const all = [...data];
    const map = all.reduce((m, n) => {
        m[n.id] = n;
        return m;
    }, {});

    for (let i = 0; i < all.length; i++) {
        const node = all[i];
        const children = node.city || node.district;
        if (children && children.length) {
            all.push(...children);
            children.reduce((m, n) => {
                n.parentId = node.id;
                m[n.id] = n;
                return m;
            }, map);
        }
    }

    return map
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题