/** * 根据id返回树节点 * @param id * @param tree * @returns node: Object 树节点 */ export const findNode = (id, tree) => { for (let i = 0; i < tree.length; i++) { if (tree[i].id === id) { return tree[i] } if (tree[i].children && tree[i].children.length > 0) { const node = findNode(id, tree[i].children) if (node) { return node } } } } /** * 根据id返回所有父节点 * @param id * @param tree * @returns *[] 父节点数组 (最近的父节点在数组末尾) */ export const findParents = (id, tree) => { for (let i = 0; i < tree.length; i++) { if (tree[i].id === id) { return [tree[i]] } if (tree[i].children && tree[i].children.length > 0) { const parents = findParents(id, tree[i].children) if (parents) { parents.unshift(tree[i]) return parents } } } }