比对获取到的省市区名称返回对应的value值,想用递归或者filter似乎都不太行得通,是否有又短又优雅的写法
getChinaArea(province,city,area){
let result = []
//直辖市
if(!province){
this.localData.forEach((items)=>{
if(items.label === city){
result.push(items.value)
if(items.children){
items.children.forEach((item)=>{
if(item.label === area){
result.push(item.value)
}
})
}
}
})
}else{
//省市区
this.localData.forEach((items)=>{
if(items.label === province){
result.push(items.value)
if(items.children){
items.children.forEach((item)=>{
if(item.label === city){
result.push(item.value)
if(item.children){
item.children.forEach((i)=>{
if(i.label === area){
result.push(i.value)
}
})
}
}
})
}
}
})
}
return result
}
数据结构是这样的
{
value: 3,
label: '河北',
children: [{
value: 3,
label: '石家庄市',
children: [{
value: 37,
label: '长安区'
},
{
value: 38,
label: '桥东区'
},
{
value: 39,
label: '桥西区'
},
{
value: 40,
label: '新华区'
},
{
value: 41,
label: '井陉矿区'
},
{
value: 42,
label: '裕华区'
},
{
value: 43,
label: '井陉县'
},
{
value: 44,
label: '正定县'
},
{
value: 45,
label: '栾城县'
},
{
value: 46,
label: '行唐县'
},
{
value: 47,
label: '灵寿县'
},
{
value: 48,
label: '高邑县'
},
{
value: 49,
label: '深泽县'
},
{
value: 50,
label: '赞皇县'
},
{
value: 51,
label: '无极县'
},
{
value: 52,
label: '平山县'
},
{
value: 53,
label: '元氏县'
},
{
value: 54,
label: '赵县'
},
{
value: 55,
label: '辛集市'
},
{
value: 56,
label: '藁城市'
},
{
value: 57,
label: '晋州市'
},
{
value: 58,
label: '新乐市'
},
{
value: 59,
label: '鹿泉市'
}
]
},
借鉴Donle的代码,将res封装到函数中,拥有自己的函数作用域