let tree = [
{
"authId": "12",
"authType": "2",
"authName": "首頁",
"authDescribe": "首頁",
"authStatus": "0",
"authPid": "0",
"authUrl": "www.index.html",
"authOrder": 1,
"childAuth": [
{
"authId": "1201",
"authType": "2",
"authName": "測試",
"authDescribe": "測試",
"authStatus": "0",
"authPid": "12",
"authOrder": 0,
"childAuth":[]
}
],
"hasChild": true
}
];
console.log(tree)
let parentNode = null;
let node = null;
function getParentNode(json, nodeId,idName,childName) {
//1.第一層 root 深度遍歷整個JSON
for (var i = 0; i < json.length; i++) {
if (node) {
break;
}
var obj = json[i];
//沒有就下一個
if (!obj || !obj[idName]) {
continue;
}
//2.有節點就開始找,一直遞歸下去
if (obj.authId == nodeId) {
//找到了與nodeId匹配的節點,結束遞歸
node = obj;
break;
} else {
//3.如果有子節點就開始找
if (obj[childName]) {
//4.遞歸前,記錄當前節點,作爲parent 父親
parentNode = obj;
//遞歸往下找
getParentNode(obj[childName], nodeId,idName,childName);
} else {
//跳出當前遞歸,返回上層遞歸
continue;
}
}
}
//5.如果木有找到父節點,置爲null,因爲沒有父親
if (!node) {
parentNode = null;
}
//6.返回結果obj
return {
parentNode: parentNode,
node: node
};
}
let pNode = getParentNode(tree,"1201","authId","childAuth");
console.log(pNode)