javaScript 根据子节点ID获取结构树中改子节点的所有父节点ID
问题
js中根据子节点ID获取结构树中该子节点所有的父节点ID
方法代码
// 传入结构树以及查询父节点的子节点ID function getTreeIds(tree, nodeId) { const { children = 'children', id = 'id' } = {}; const toFlatArray = (tree, parentId) => { return tree.reduce((t, _) => { const child = _[children] return [ ...t, parentId ? { ..._, parentId } : _, ...(child && child.length ? toFlatArray(child, _[id]) : [])] }, []) } const getIds = flatArray => { let ids = [nodeId] let child = flatArray.find(_ => _[id] === nodeId) while (child && child.parentId) { ids = [child.parentId, ...ids] child = flatArray.find(_ => _[id] === child.parentId) } return ids } return getIds(toFlatArray(tree)) }