You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何递归校验树节点所有层级的visible属性?

问题分析

原函数仅校验了当前节点的直接一级子节点的visible属性,没有处理子节点还包含嵌套后代的场景,需要新增递归逻辑向下遍历所有层级的节点。

修改后的代码

nodeHasAllChildren(node: TreeNode) {
    // 边界处理和原函数保持一致:节点不存在/无后代时返回false
    if (!node?.children) return false;

    return node.children.every((child) => {
        // 校验当前子节点自身是否不可见
        const curNodeInvisible = child?.visible === false;
        // 若当前子节点还有后代,递归校验其所有后代是否全部不可见
        const descendentsAllInvisible = child?.children ? this.nodeHasAllChildren(child) : true;
        
        return curNodeInvisible && descendentsAllInvisible;
    });
}

逻辑说明

  • 边界逻辑和原函数完全兼容,不会影响原有业务的判断结果
  • 每个子节点需要同时满足两个条件才会判定为符合要求:
    • 自身visible属性为false
    • 如果存在嵌套子节点,所有嵌套后代的visible属性全部为false
  • 如果你的业务逻辑里「没有子节点的节点需要返回true」,只需要把第一行的边界返回值改为return true即可。

内容的提问来源于stack exchange,提问作者user15361861

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 22:18:04