var data=[
{
"id": 1,
"name": "default",
"number": "",
"filenames": "",
"uname": null,
"uid": 0,
"modified": "2018-04-18",
"desc": "默认目录",
"pid": 0,
"visible": true,
"attach": null,
"nodes": null
},
{
"id": 2,
"name": "档案中心",
"number": null,
"filenames": "",
"uname": null,
"uid": 0,
"modified": "2018-04-17",
"desc": "用户档案根目录",
"pid": 0,
"visible": true,
"attach": null,
"nodes": [
{
"id": 15,
"name": "人事档案",
"number": null,
"filenames": "",
"uname": null,
"uid": 0,
"modified": "2018-04-17",
"desc": null,
"pid": 2,
"visible": true,
"attach": null,
"nodes": [
{
"id": 26,
"name": "人事一部",
"number": null,
"filenames": "",
"uname": null,
"uid": 67108875,
"modified": "2018-05-30",
"desc": null,
"pid": 15,
"visible": true,
"attach": null,
"nodes": null
},
{
"id": 27,
"name": "人事二部",
"number": null,
"filenames": "",
"uname": null,
"uid": 67108875,
"modified": "2018-05-30",
"desc": null,
"pid": 15,
"visible": true,
"attach": null,
"nodes": null
}
]
},
{
"id": 16,
"name": "安防档案",
"number": null,
"filenames": "",
"uname": null,
"uid": 0,
"modified": "2018-04-16",
"desc": null,
"pid": 2,
"visible": true,
"attach": null,
"nodes": null
},
{
"id": 17,
"name": "设备档案",
"number": null,
"filenames": "",
"uname": null,
"uid": 0,
"modified": "2018-04-17",
"desc": null,
"pid": 2,
"visible": true,
"attach": null,
"nodes": null
},
{
"id": 18,
"name": "行政档案",
"number": null,
"filenames": "",
"uname": null,
"uid": 0,
"modified": "2018-04-17",
"desc": null,
"pid": 2,
"visible": true,
"attach": null,
"nodes": null
}
]
},
{
"id": 3,
"name": "应急管理",
"number": null,
"filenames": "",
"uname": null,
"uid": 0,
"modified": "2018-04-17",
"desc": "应急管理档案根目录",
"pid": 0,
"visible": true,
"attach": null,
"nodes": [
{
"id": 4,
"name": "应急预案",
"number": null,
"filenames": "",
"uname": null,
"uid": 0,
"modified": "2018-04-17",
"desc": null,
"pid": 3,
"visible": true,
"attach": null,
"nodes": null
},
{
"id": 5,
"name": "总结评估",
"number": null,
"filenames": "",
"uname": null,
"uid": 0,
"modified": "2018-04-17",
"desc": null,
"pid": 3,
"visible": true,
"attach": null,
"nodes": null
},
{
"id": 6,
"name": "应急科普",
"number": null,
"filenames": "",
"uname": null,
"uid": 0,
"modified": "2018-04-17",
"desc": null,
"pid": 3,
"visible": true,
"attach": null,
"nodes": null
}
]
}
];
////////////////////////////////////////////////////
var parentNode = null;
var node = null;
function getNode(json, nodeId) {
//1.第一层 root 深度遍历整个JSON
for (var i = 0; i < json.length; i++) {
if (node) {
break;
}
var obj = json[i];
//没有就下一个
/*if (!obj || !obj.pid) {
continue;
}*/
//2.有节点就开始找,一直递归下去
if (obj.pid == nodeId) {
//找到了与nodeId匹配的节点,结束递归
node = obj;
break;
} else {
//3.如果有子节点就开始找
if (obj.nodes) {
//4.递归前,记录当前节点,作为parent 父亲
parentNode = obj;
//递归往下找
console.log()
getNode(obj.nodes, nodeId);
} else {
//跳出当前递归,返回上层递归
continue;
}
}
}
// console.log(obj)
//5.如果木有找到父节点,置为null,因为没有父亲
if (!node) {
parentNode = null;
}
//6.返回结果obj
return {
parentNode: parentNode,
node: node
};
}
var obj=getNode(data, 15)
console.log(obj);