Function filterTreeArray

  • 递归过滤树形结构数据

    • 节点满足条件,子节点将不会被过滤,所有后代节点将会保留
    • 子节点满足条件,父节点将会被保持留(维持树形结构)
    • 返回的数据是对treeDataArr数组中每一项的浅拷贝,不会修改原始treeDataArr中的值

    Type Parameters

    Parameters

    • treeDataArr: readonly T[]

      树形结构数据数组

    • filterFn: ((node: T) => boolean)

      过滤函数,用于判断节点是否符合条件,函数返回布尔值

        • (node): boolean
        • Parameters

          • node: T

          Returns boolean

    • childrenFieldName: keyof T = 'children'

      子节点的字段名,默认为 'children'

    Returns T[]

    过滤后的节点数组

    const treeDataArr = [
    {key: '1',children: [{key: '1-1'},{key: '1-2',children: [{key: '1-2-1',},{key: '1-2-2'}]}]},
    {key: '2',children: [{key: '2-1',children: [{key: '2-1-1'}]}]}
    ]

    filterTreeArray(treeDataArr, (node) => {
    return node.key === '1-2-1'
    })

    输出
    [{key: '1',children: [{key: '1-2',children: [{key: '1-2-1'}]}]}]