Skip to content

树结构数组的筛选

  • 需求

    树结构数组的筛选

  • 代码

    interface ITExtends {
      children?: []
      level?
    }
    
    /**
     * 树结构筛选, 调用 treeFilter(tree, node => { console.log(node.title) })
    * @param tree
    * @param func 传入一个函数描述符合条件的节点
    * @returns
    */
    export const treeFilter = <T>(tree, func): Array<T> => {
      // 使用 map 复制一下节点,避免修改到原树结构数据
      return tree
        .map((node) => ({ ...node }))
        .filter((node) => {
          node.children = node.children && treeFilter(node.children, func)
          return func(node) || (node.children && node.children.length)
        })
    }