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

  

原帖地址

  https://zhuanlan.zhihu.com/p/484886345

posted @ 2022-06-14 09:42  假装空白  阅读(1101)  评论(0)    收藏  举报