let area = {
"province": [{
"value": "150000",
"label": "内蒙古自治区",
"key": "150000"
}],
"city": [{
"value": "150200",
"label": "包头市",
"key": "150200"
},
{
"value": "150900",
"label": "乌兰察布市",
"key": "150900"
}
],
"area": [{
"value": "150222",
"label": "固阳县",
"key": "150222"
},
{
"value": "150923",
"label": "商都县",
"key": "150923"
}
],
"town": [{
"value": "150923101",
"label": "七台镇",
"key": "150923101"
},
{
"value": "150923106",
"label": "小海子镇",
"key": "150923106"
}
]
}
let keyArr = Object.keys(area)
let index = [0, 3, 4, 6]
let resMap = new Map()
function get(i = 0, res = {}) {
resMap.set(res.key, res)
if (i === index.length) {
return
}
const keyString = res.key ? res.key.substring(0, index[i]) : area.province[0].key.substring(0, index[i])
area[keyArr[i]].forEach(e => {
if (e.key.substring(0, index[i]) === keyString) {
const tempO = {
...res,
[keyArr[i]]: e.label,
[`${keyArr[i]}Code`]: e.value,
key: e.key,
}
if (resMap.get(res[`${keyArr[i-1]}Code`])) {
resMap.delete(res[`${keyArr[i-1]}Code`])
}
get(i + 1, tempO )
}
});
}
get()
let res = Array.from(resMap.values()).map(e => {
delete e.key
return e
})
console.log(res);
写在这里是卡了一下 为什么要处理成这样的数据 怕是很难遇到哦 核心是
if (resMap.get(res[${keyArr[i-1]}Code
])) {
resMap.delete(res[${keyArr[i-1]}Code
])
}
这个代码是判断有没有父级 有父级就删除父级