现有这样的json数据
{
'value': '110000',
'label': '北京市',
'children': [
{
'value': '110100',
'label': '北京市',
'children': [
{
'value': '110101',
'label': '东城区'
},
{
'value': '110102',
'label': '西城区'
},
{
'value': '110105',
'label': '朝阳区'
},
{
'value': '110106',
'label': '丰台区'
},
{
'value': '110107',
'label': '石景山区'
},
{
'value': '110108',
'label': '海淀区'
},
{
'value': '110109',
'label': '门头沟区'
},
{
'value': '110111',
'label': '房山区'
},
{
'value': '110112',
'label': '通州区'
},
{
'value': '110113',
'label': '顺义区'
},
{
'value': '110114',
'label': '昌平区'
},
{
'value': '110115',
'label': '大兴区'
},
{
'value': '110116',
'label': '怀柔区'
},
{
'value': '110117',
'label': '平谷区'
},
{
'value': '110118',
'label': '密云区'
},
{
'value': '110119',
'label': '延庆区'
}
]
}
]
},
{
'value': '120000',
'label': '天津市',
'children': [
{
'value': '120100',
'label': '天津市',
'children': [
{
'value': '120101',
'label': '和平区'
},
{
'value': '120102',
'label': '河东区'
},
{
'value': '120103',
'label': '河西区'
},
{
'value': '120104',
'label': '南开区'
},
{
'value': '120105',
'label': '河北区'
},
{
'value': '120106',
'label': '红桥区'
},
{
'value': '120110',
'label': '东丽区'
},
{
'value': '120111',
'label': '西青区'
},
{
'value': '120112',
'label': '津南区'
},
{
'value': '120113',
'label': '北辰区'
},
{
'value': '120114',
'label': '武清区'
},
{
'value': '120115',
'label': '宝坻区'
},
{
'value': '120116',
'label': '滨海新区'
},
{
'value': '120117',
'label': '宁河区'
},
{
'value': '120118',
'label': '静海区'
},
{
'value': '120119',
'label': '蓟州区'
}
]
}
]
},
如何根据 ['北京市','北京市','东城区']
查出对应的code ["110000", "110100", "110101"]
先在的解决方案用的是三层遍历,有没有更优化的方法,求大神的优化防范
let findCodeByName = (areaList,province,city,area) =>{
let data = [];
areaList.forEach(pr => {
if(pr.label === province) {
data.push(pr.value)
if(pr.children) {
pr.children.forEach(ci => {
if(ci.label === city) {
data.push(ci.value)
if(ci.children) {
ci.children.forEach( are => {
if(are.label === area) {
data.push(are.value)
}
})
}
}
})
}
}
});
return data
}