【发布时间】:2011-12-29 03:41:51
【问题描述】:
我有一个树结构,它有一个带有父 ID 的节点(无限的子节点)。出于显示目的,我需要将此树结构作为二叉树。我如何做到这一点是在每个级别节点根据条件分组为单个节点。当一个节点被选中时,它的子节点就会显示出来。示例:
绿色是条件是true,红色是false
B、C 已分到左侧节点,D、E 根据条件分在右侧。
问题:我正在使用 KnockoutJS 来显示我的树,我需要能够执行正常的树操作,例如根据其 ID 获取节点、插入节点、删除节点)。这是我的结构。有没有更好的结构/方式来做到这一点?
var tree = [
{ groupNodeId: "A", childNodes: [
{ nodeId: "A", childGroupNodes: [
{ groupNodeId: "B", condition: true, childNodes: [
{ nodeId: "B", childGroupNodes: []},
{ nodeId: "C", childGroupNodes: []}
]},
{ groupNodeId: "D", condition: false, childNodes: [
{ nodeId: "D", childGroupNodes: []},
{ nodeId: "E", childGroupNodes: []}
]}
]}
]}
];
【问题讨论】:
-
为什么插入节点使用
childGroupNodes和groupNodeId,而不是继续使用childNodes和nodeId?此外,例如,如果 B 和 C 各有一个子节点,其condition为真,您是否希望将这两个节点组合在一起? -
另外,我认为 groupNode 中的
condition: trueD是错字?
标签: javascript tree binary-tree knockout.js