js多叉树数据算法问题

一个树结构数据,不确定children有多少层,需要将每项上id等于01或者02的保留,其余删除,返回一个新树或者在树上直接修改。(如果子节点有01,父节点不是01或者02,父节点也需要保留)

阅读 1.8k
2 个回答
function treeFilter (tree, func) {
  // 使用map复制一下节点,避免修改到原树
  return tree.map(node => ({ ...node })).filter(node => {
    node.children = node.children && treeFilter(node.children, func)
    return func(node) || (node.children && node.children.length)
  })
}
const result = treeFilter(tree, node => ['01', '02'].includes(node.id))
function filterTree(tree){
    return tree.filter(node => {
        if(Array.isArray(node.children)){
            let nc = filterTree(node.children)
            if(nc.length){
                node.children = nc
                return true
            }
        }
        return node.id == '01' || node.id == '02'
    })
}
推荐问题