多维数组根据某个值获取这个值对应的数组项,支持获取整个链条

多维数组根据某个值获取这个值对应的数组项,支持获这个值所在的整个链条

作者 拓荒 日期 2020-11-06

有个省市区的多维数组,给定一个省或市或区对应的code 找到这个区的名称

// arr: 数组, id: 省市区的code或id
getArea(arr, id){
for(let i = 0; i<arr.length; i++){
if(arr[i].areaid == id){
return arr[i]
break;
}
if(arr[i].children&&arr[i].children.length>0){
let res = this.getArea(arr[i].children, id)
if(res){
return res
}
}
}
},

如果要是给定的一个区的code,要求不只是获取这个区的名字还要获取这区对应的省市

getAreas(arr, id, areas=[]){
for(let i = 0; i<arr.length; i++){
if(arr[i].areaid == id){
areas.push(arr[i])
return areas
break;
}
if(arr[i].children&&arr[i].children.length>0){
areas.push(arr[i])
let res = this.getAreas(arr[i].children, id, areas)
if(res){
return res
}
}
}
// 如果上面没有return 则说明当前还没有找到,这个时候需要删除
areas.splice(areas.length-1, 1)
},

这个时候返回的市一个数组,数组前一项是后一项的父级

完结。