layui/.svn/pristine/2b/2b807fe1626fdd7cc74b1f5e71e3dad93a4bb0cf.svn-base
2022-12-09 16:41:41 +08:00

35 lines
972 B
Plaintext

export function getNode(root: any, id: string) {
let resultNode = null;
findNode(root, id);
function findNode(root: any, id: string) {
if (!!root) {
let type = Object.prototype.toString.call(root);
if (type === "[object Object]") {
if (root.id && root.id === id) {
resultNode = root;
} else {
let node = root.children || null;
findNode(node, id);
}
} else if (type === "[object Array]") {
let needNode = root.find((i: any) => !!i === true && i.id === id);
if (!!needNode) {
resultNode = needNode;
} else {
if (root.length) {
root.forEach((item: any) => {
if (item && item.children) {
let node = item.children;
if (node && node.length) {
findNode(node, id);
}
}
});
}
}
}
}
}
return resultNode;
}