Javascript d3.js(树布局)-获取父节点-奇怪的行为

Javascript d3.js(树布局)-获取父节点-奇怪的行为,javascript,d3.js,tree,Javascript,D3.js,Tree,有几个小时我被一个我根本不懂的问题所困扰 我有一个树布局,如果一个节点有子节点并且有“subcomponent”属性,我想得到父节点。事实上,如果节点遵守my two条件,我希望将其子节点重新附加到其父节点,并移除自身 如果我有这个计划: A --> B (subcomponent) --> C --> D 我希望它呈现如下: A --> C --> D 为了实现这一点,我必须重新定义children访问器(tr

有几个小时我被一个我根本不懂的问题所困扰

我有一个树布局,如果一个节点有子节点并且有“subcomponent”属性,我想得到父节点。事实上,如果节点遵守my two条件,我希望将其子节点重新附加到其父节点,并移除自身

如果我有这个计划:

A --> B (subcomponent) --> C
                       --> D
我希望它呈现如下:

A --> C
  --> D
为了实现这一点,我必须重新定义children访问器(tree.children),如果节点满足我的两个条件,它应该将他的子节点转移到其父节点并移除自己。要做到这一点,我需要访问节点父节点

tree.children(function children(d) {
    if("children" in d && "subcomponent" in d) {
        console.log(d);
    }

    return d.children;
});
日志语句显示:似乎父字段存在,但我只能访问“name”、“subcomponent”和“children”键。小时和小时我尝试访问父字段,因为它包含我需要的所有数据(例如parent.children字段..)

这里是一个工作示例:相关行在29-30附近,其中d是“服务a.1节点”,我可以在这里访问“服务a”节点,因为它是其父节点。一旦我有了父节点,我想做什么的整个算法就已经在本地计算机上实现了


谢谢大家。

在我看来,重新格式化显示数据(即删除这些子组件)会更容易。可能会更容易,但我必须允许“单击”节点以显示其子组件的可能性。我必须能够切换两个方案之间的上述点击。这就是我不想删除任何节点的原因。你能提供一个完整的工作示例吗?添加在主帖子中。:)嗯,我不认为你可以用children访问器来做这件事,因为它实际上需要修改树结构。我同意两种不同的表述。