前端城市地址根据最后一级倒推,获取各层级id的方法
这个需要是后端返回最后一级地址的id,前端要去获取上级或上上级的id,实现数据返显。这里写了一个通用的方法,后面在任何地方直接调用即可。
/**
* 根据最终区域code,获取省市区区域code路径数组
* regionDatas 地址数组
* @param finalCode 区域code,例如 "110101" 表示北京市朝阳区东城区
* @returns string[] 省市区区域code路径数组,例如 ["110000", "110100", "110101"] 表示北京市朝阳区东城区
*/
export const getRegionArrByFinalCode = (finalCode: string | number, regionDatas: any[]) => {
if (!Array.isArray(regionDatas) || !regionDatas.length) return [];
let result: string[] = [];
const dfs = (data: any[], path: string[] = []) => {
for (const item of data) {
if (!item) continue;
const currentPath = [...path, item.region];
if (item.region == finalCode) {
result = currentPath;
return true;
}
if (item.children && dfs(item.children, currentPath)) return true;
}
return false;
};
dfs(regionDatas);
return result;
};