gpt4 book ai didi

javascript - 使用 cytoscape.js 选择属性(数组类型)包含特定值的节点

转载 作者:数据小太阳 更新时间:2023-10-29 05:26:09 25 4
gpt4 key购买 nike

我目前正在可视化一个网络,其中节点具有列表类型的属性,例如:

{"data": {"name": "b", "go": ["c", "d", "f"], "id": "n0"}, "group": "nodes"},
{"data": {"name": "a", "go": ["a", "b", "c"], "id": "n1"}, "group": "nodes"},
{"data": {"target": "n0", "source": "n1", "id": "e1"}, "group": "edges"}

是否可以使用 cytoscape.js 选择列表属性(示例中的“go”)包含特定值的所有节点?

类似于:

cy.elements('node[go.contains("b")]')

这将选择节点 n1...

提前致谢

最佳答案

备选方案:如果您不需要使用选择器,则可以改用过滤器函数并将属性保留为数组:cy.elements().filter(function(){ return this.data( 'go').indexOf('foo') >= 0; })

数组包含检查在选择器中执行起来可能很昂贵,因为它们最常用于样式表中——只要状态发生变化就需要应用。目前,无法使用现有的选择器和当前的数据结构来执行您的建议。

您可能会发现使用对象比使用数组更容易。该对象可以是简单的 name:true 对,例如 go: { foo: true, bar: true }。由于 undefined 是错误的,您只需要像在数组中一样定义正例。

这样,您可以使用一个简单的选择器,例如 node[go\\.foo](或者 node[?go\\.foo] 如果您愿意更明确一点)。在您自己的代码中进行检查也更简单、成本更低(例如 node.data('go.foo') ? 'has it' : 'does not')。

关于javascript - 使用 cytoscape.js 选择属性(数组类型)包含特定值的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25124572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com