Skip to content

treeDel

treeDel 函数用于从树形结构中删除满足指定条件的节点。

语法

javascript
treeDel(treeLike, func)

参数

  • treeLike

    • 树形结构数据,可以是数组或单个对象。函数内部会使用 treeSafe() 方法统一转换为数组格式。
  • func

    • 判断函数,用于确定哪些节点需要被删除。
    • 参数
      • item {Object} - 当前正在处理的节点对象
    • 返回值:{boolean} - 如果返回 true,则该节点及其所有子节点将被删除

返回值

返回入参指针treeLike,直接修改原树结构

描述

treeDel() 函数采用迭代方式遍历树形结构,时间复杂度为 O(n),其中 n 是树中的节点总数。该函数会深度优先遍历树结构,当找到满足条件的节点时,会删除该节点及其所有子节点。

重要特性

  • 使用迭代而非递归,避免栈溢出风险
  • 保持原树结构不变,返回新的树结构
  • 支持删除节点及其所有子节点
  • 自动处理树形数据的统一格式转换

示例

基本用法

删除多个节点

使用对象格式的树

浏览器兼容性

treeDel() 函数在所有现代浏览器中均可使用,不依赖任何浏览器特定 API。

性能考虑

  • 时间复杂度: O(n) - 需要遍历树中的所有节点
  • 空间复杂度: O(n) - 使用栈结构进行迭代遍历,最坏情况下需要存储所有节点
  • 内存使用: 返回新的树结构,不会修改原数据

相关函数

  • treeSafe() - 安全处理树形结构,确保为数组格式
  • treeFilter() - 筛选树形结构中的节点
  • treeFind() - 在树形结构中查找节点
  • treeMap() - 对树形结构中的每个节点应用变换函数

注意事项

  1. 如果 func 函数对根节点返回 true,整个树将被删除,返回空数组
  2. 函数直接修改原始树结构,返回被删除的节点数组。
  3. 如果输入数据为 nullundefined,函数将返回空数组
  4. 删除操作会同时删除目标节点的所有子节点