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))
}

浙公网安备 33010602011771号