鍍金池/ 問答/HTML/ 如何對省市區(qū)數(shù)組數(shù)據(jù),匹配已選擇數(shù)據(jù)并刪除

如何對省市區(qū)數(shù)組數(shù)據(jù),匹配已選擇數(shù)據(jù)并刪除

先看下數(shù)據(jù)

  1. 已選擇的省市區(qū)部分數(shù)據(jù)
 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: "興寧區(qū)", //需刪除
                                        selected: true
                                    },
                                    {
                                        id: 2296,
                                        selected: true,
                                        districtName: "青秀區(qū)"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        id: 39,
                        provinceName: "河北",//河北省全刪,因為沒有city,或者city為null
                        selected: true
                    }
                ]

全部的省市區(qū)模型

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": "東城區(qū)",
            "districtId": "110101",
            "selected": false
          },
          {
            "id": 4,
            "sheng": "11",
            "di": "01",
            "xian": "02",
            "districtName": "西城區(qū)",
            "districtId": "110102",
            "selected": false
          },
          {
            "id": 5,
            "sheng": "11",
            "di": "01",
            "xian": "05",
            "districtName": "朝陽區(qū)",
            "districtId": "110105",
            "selected": false
          },
          {
            "id": 6,
            "sheng": "11",
            "di": "01",
            "xian": "06",
            "districtName": "豐臺區(qū)",
            "districtId": "110106",
            "selected": false
          },
          {
            "id": 7,
            "sheng": "11",
            "di": "01",
            "xian": "07",
            "districtName": "石景山區(qū)",
            "districtId": "110107",
            "selected": false
          },
          {
            "id": 8,
            "sheng": "11",
            "di": "01",
            "xian": "08",
            "districtName": "海淀區(qū)",
            "districtId": "110108",
            "selected": false
          },
          {
            "id": 9,
            "sheng": "11",
            "di": "01",
            "xian": "09",
            "districtName": "門頭溝區(qū)",
            "districtId": "110109",
            "selected": false
          },
          {
            "id": 10,
            "sheng": "11",
            "di": "01",
            "xian": "11",
            "districtName": "房山區(qū)",
            "districtId": "110111",
            "selected": false
          },
          {
            "id": 11,
            "sheng": "11",
            "di": "01",
            "xian": "12",
            "districtName": "通州區(qū)",
            "districtId": "110112",
            "selected": false
          },
          {
            "id": 12,
            "sheng": "11",
            "di": "01",
            "xian": "13",
            "districtName": "順義區(qū)",
            "districtId": "110113",
            "selected": false
          },
          {
            "id": 13,
            "sheng": "11",
            "di": "01",
            "xian": "14",
            "districtName": "昌平區(qū)",
            "districtId": "110114",
            "selected": false
          },
          {
            "id": 14,
            "sheng": "11",
            "di": "01",
            "xian": "15",
            "districtName": "大興區(qū)",
            "districtId": "110115",
            "selected": false
          },
          {
            "id": 15,
            "sheng": "11",
            "di": "01",
            "xian": "16",
            "districtName": "懷柔區(qū)",
            "districtId": "110116",
            "selected": false
          },
          {
            "id": 16,
            "sheng": "11",
            "di": "01",
            "xian": "17",
            "districtName": "平谷區(qū)",
            "districtId": "110117",
            "selected": false
          },
          {
            "id": 3513,
            "sheng": "11",
            "di": "01",
            "xian": "03",
            "districtName": "崇文區(qū)",
            "districtId": "110103",
            "selected": false
          },
          {
            "id": 3514,
            "sheng": "11",
            "di": "01",
            "xian": "04",
            "districtName": "宣武區(qū)",
            "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": "興寧區(qū)",
            "districtId": "450102",
            "selected": false
          },
          {
            "id": 2296,
            "sheng": "45",
            "di": "01",
            "xian": "03",
            "districtName": "青秀區(qū)",
            "districtId": "450103",
            "selected": false
          },
          {
            "id": 2297,
            "sheng": "45",
            "di": "01",
            "xian": "05",
            "districtName": "江南區(qū)",
            "districtId": "450105",
            "selected": false
          },
          {
            "id": 2298,
            "sheng": "45",
            "di": "01",
            "xian": "07",
            "districtName": "西鄉(xiāng)塘區(qū)",
            "districtId": "450107",
            "selected": false
          },
          {
            "id": 2299,
            "sheng": "45",
            "di": "01",
            "xian": "08",
            "districtName": "良慶區(qū)",
            "districtId": "450108",
            "selected": false
          },
          {
            "id": 2300,
            "sheng": "45",
            "di": "01",
            "xian": "09",
            "districtName": "邕寧區(qū)",
            "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": "城中區(qū)",
            "districtId": "450202",
            "selected": false
          },
          {
            "id": 2310,
            "sheng": "45",
            "di": "02",
            "xian": "03",
            "districtName": "魚峰區(qū)",
            "districtId": "450203",
            "selected": false
          },
          {
            "id": 2311,
            "sheng": "45",
            "di": "02",
            "xian": "04",
            "districtName": "柳南區(qū)",
            "districtId": "450204",
            "selected": false
          },
          {
            "id": 2312,
            "sheng": "45",
            "di": "02",
            "xian": "05",
            "districtName": "柳北區(qū)",
            "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": "秀峰區(qū)",
            "districtId": "450302",
            "selected": false
          },
          {
            "id": 2322,
            "sheng": "45",
            "di": "03",
            "xian": "03",
            "districtName": "疊彩區(qū)",
            "districtId": "450303",
            "selected": false
          },
          {
            "id": 2323,
            "sheng": "45",
            "di": "03",
            "xian": "04",
            "districtName": "象山區(qū)",
            "districtId": "450304",
            "selected": false
          },
          {
            "id": 2324,
            "sheng": "45",
            "di": "03",
            "xian": "05",
            "districtName": "七星區(qū)",
            "districtId": "450305",
            "selected": false
          },
          {
            "id": 2325,
            "sheng": "45",
            "di": "03",
            "xian": "11",
            "districtName": "雁山區(qū)",
            "districtId": "450311",
            "selected": false
          },
          {
            "id": 2326,
            "sheng": "45",
            "di": "03",
            "xian": "12",
            "districtName": "臨桂區(qū)",
            "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": "永??h",
            "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": "萬秀區(qū)",
            "districtId": "450403",
            "selected": false
          },
          {
            "id": 2341,
            "sheng": "45",
            "di": "04",
            "xian": "05",
            "districtName": "長洲區(qū)",
            "districtId": "450405",
            "selected": false
          },
          {
            "id": 2342,
            "sheng": "45",
            "di": "04",
            "xian": "06",
            "districtName": "龍圩區(qū)",
            "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": "蝶山區(qū)",
            "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": "海城區(qū)",
            "districtId": "450502",
            "selected": false
          },
          {
            "id": 2350,
            "sheng": "45",
            "di": "05",
            "xian": "03",
            "districtName": "銀海區(qū)",
            "districtId": "450503",
            "selected": false
          },
          {
            "id": 2351,
            "sheng": "45",
            "di": "05",
            "xian": "12",
            "districtName": "鐵山港區(qū)",
            "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": "港口區(qū)",
            "districtId": "450602",
            "selected": false
          },
          {
            "id": 2356,
            "sheng": "45",
            "di": "06",
            "xian": "03",
            "districtName": "防城區(qū)",
            "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": "欽南區(qū)",
            "districtId": "450702",
            "selected": false
          },
          {
            "id": 2362,
            "sheng": "45",
            "di": "07",
            "xian": "03",
            "districtName": "欽北區(qū)",
            "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": "港北區(qū)",
            "districtId": "450802",
            "selected": false
          },
          {
            "id": 2368,
            "sheng": "45",
            "di": "08",
            "xian": "03",
            "districtName": "港南區(qū)",
            "districtId": "450803",
            "selected": false
          },
          {
            "id": 2369,
            "sheng": "45",
            "di": "08",
            "xian": "04",
            "districtName": "覃塘區(qū)",
            "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": "玉州區(qū)",
            "districtId": "450902",
            "selected": false
          },
          {
            "id": 2375,
            "sheng": "45",
            "di": "09",
            "xian": "03",
            "districtName": "福綿區(qū)",
            "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": "興業(yè)縣",
            "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": "右江區(qū)",
            "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": "德??h",
            "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": "樂業(yè)縣",
            "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": "八步區(qū)",
            "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": "平桂管理區(qū)",
            "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": "金城江區(qū)",
            "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": "環(huán)江毛南族自治縣",
            "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": "興賓區(qū)",
            "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": "象州縣",
            "d
回答
編輯回答
她愚我

為了方便查找,建立一個 id => node 的映射表,
為了找父級(因為子級刪除之后要檢查父級是否需要刪除)建立一個向上的連接關系

然后在指定一個城市或下級地區(qū) ID 之后,

  • 通過 id 從映射表找到該節(jié)點
  • 通過節(jié)點上添加的 parentId(父級關系)找到對應的父級節(jié)點
  • 從父級節(jié)點刪除指定 ID 的子節(jié)點
  • 檢查父級節(jié)點的子節(jié)點數(shù)量
  • 如果為 0 遞歸刪除該父級節(jié)點

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


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
}
2018年9月6日 13:21