tree 数据
var arr = [{ "label": "文件夹", "parentId": null, "id": "0", "children": [{ "label": "文件夹1", "parentId": "0", "id": "1", "children": [{ "label": "文件夹1-1", "parentId": "1", "id": "1.1", "children": null }, { "label": "文件夹1-2", "parentId": "1", "id": "1.2", "children": null }, { "label": "文件夹1-3", "parentId": "1", "id": "1.3", "children": [{ "label": "文件夹1-3-1", "parentId": "1.3", "id": "1.3.1", "children": [{ "label": "文件夹1-3-1-1", "parentId": "1.3.1", "id": "1.3.1.1", "children": null }] }, { "label": "文件夹1-3-2", "parentId": "1.3", "id": "1.3.2", "children": null }, { "label": "文件夹1-3-3", "parentId": "1.3", "id": "1.3.3", "children": null } ] } ] }, { "label": "文件夹2", "parentId": "0", "id": "2", "children": [{ "label": "文件夹2-1", "parentId": "2", "id": "2.1", "children": null }] }, { "label": "文件夹3", "parentId": "0", "id": "3", "children": null } ] }];
递归查找
//递归找父级id getParentIds(treeData, nodeId) {
var arrRes = [];
if(treeData.length == 0) {
if(!!nodeId) {
arrRes.unshift(nodeId);
}
return arrRes;
}
let rev = (data, nodeId) => {
for(var i = 0, length = data.length; i < length; i++) {
let node = data[i];
if(node.id == nodeId) {
arrRes.unshift(nodeId);
rev(treeData, node.parentId);
break;
} else {
if(!!node.children) {
rev(node.children, nodeId);
}
}
}
return arrRes;
};
arrRes = rev(treeData, nodeId);
return arrRes;
},
结果
this.getParentIds(arr,1.3.1) // [0,1,1.3,1.3.1]
原文:https://www.cnblogs.com/zhaozhenzhen/p/10972931.html