首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只搜索cytoscape.js中的某个节点

只搜索cytoscape.js中的某个节点
EN

Stack Overflow用户
提问于 2022-07-19 14:23:50
回答 2查看 39关注 0票数 0

我可以使用predecessors函数查找节点的所有前身。我想要的是找到一个前辈。

(图被约束为有一个父)

示例:

在上面的图片中,如果我在predecessors节点8上调用[1, 2, 3, 4, 5, 6, 7],结果将给出[1, 2, 3, 4, 5, 6, 7](忽略边缘)。

我希望它将搜索限制在某个节点上。如果我希望它将搜索限制到4,它应该只返回[4, 5, 6, 7]。上面没有任何东西。

是否可以使用本机胞景函数?

predecessors函数接受选择器,根据医生们,我尝试过像node.predecessors("node#4 node")那样使用选择器。但什么也没回。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-21 05:43:55

我设法解决了这个问题,找到了我想要停止的节点的所有后继者,然后将它与输入节点的前辈交叉:

代码语言:javascript
复制
const node = cy.$('node#8');
const predecessors = node.predecessors(); // [1, 2, 3, 4, 5, 6, 7]

const requiredRootNode = cy.$('node#4');
const rootChildren = requiredRootNode.successors(); // [5, 6, 7, 8]

const intersection = rootChildren.intersection(predecessors); // [5, 6, 7]

const result = intersection.add(requiredRootNode); // [4, 5, 6, 7]
票数 1
EN

Stack Overflow用户

发布于 2022-07-20 17:57:33

您可以使用breadthFirstSearch.depthFirstSearch 或。

那里的代码示例将允许您更改visit。根据您的喜好更改以下内容:

代码语言:javascript
复制
const limitingID = '4';

var bfs = cy.elements().bfs({
    roots: '#e',
    visit: function(v){
        // Stopping at desired node
        if( v.id == limitingID ){
            return true;
        }
    },
    directed: false 
});

var path = bfs.path; // path to found node
var found = bfs.found; // found node
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73038701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档