公司項目開發中遇到的實際需求
1.后端返回的城市樹狀數據格式:
附上數據格式源碼:
const city=[ { companyId: 1, id: "1", label: "四川省", parentId: "", value: "1", children:[ { companyId: 1, id: "2", label: "成都市", parentId: "1", value: "2", children:[ { companyId: 1, id: "3", label: "高新區", parentId: "2", value: "3", children:[ { companyId: 1, id: "4", label: "環球中心", parentId: "3", value: "4" } ] } ] } ] } ]
由於公司項目是vue項目,所以我直接寫成了單獨JS文件:
具體使用如下:1.在utils下建立cityQueryParent.js文件
2.cityQueryParent.js里的代碼如下:
附上代碼:
export function getParentIdList(list, id) { if (!list || !id) { return '' } let arr = []; let findParent = (data, nodeId, parentId) => { for (var i = 0, length = data.length; i < length; i++) { let node = data[i]; //由於后端返回的樹狀結構數組里面的value值為string類型,所以為了避免判斷全等有問題,所以將傳入的城市id使用toString進行了類型轉換 if (node.value === nodeId.toString()) { arr.unshift(nodeId.toString()); if (nodeId.toString() === list[0].value) { break } findParent(list, parentId); break } else { if (node.children) { findParent(node.children, nodeId, node.value); } continue } } return arr; } return findParent(list, id); }
3.頁面使用:
import * as util2 from "@/utils/cityQueryParent";
使用示例:
id傳入為3
輸出結果: