我有几个复合节点(A 包含 B,B 包含 C),我想选择叶节点 (C)。怎么做?
谢谢!
您选择的意思不清楚,但我猜您的意思是如何查询图表:
cy.nodes().not(':parent'); // all nodes who are not themselves a parent
// or //
cy.nodes(':child').not(':parent'); // all descendant nodes who are not themselves a parent
为了选择所有叶子,可以使用 cytoscape 提供的 Leaves() 方法:https ://js.cytoscape.org/#nodes.leaves
您可以按如下方式使用它:
cy.nodes().leaves()
这将返回一个节点数组。因此,您可以遍历它们中的每一个,也可以简单地选择索引 = 0 的叶子(如果您确定树中只有一个叶子)。
const leaves = cy.nodes().leaves();
leaves.forEach((leaf) => {
// add 1 to count the node it self.
console.log('leaf -> ', leaf.data().id, 'deepLevel: ', leaf.predecessors('node').length + 1);
});