首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据表单输入过滤d3 js对象

根据表单输入过滤d3 js对象
EN

Stack Overflow用户
提问于 2014-02-27 21:46:28
回答 1查看 674关注 0票数 1

我正在使用d3js来显示节点和边的网络。在可视化中,我包含了一个用于搜索节点的HTML表单输入选项。输入可以是多个节点。

我在使用过滤函数过滤多个节点时遇到了困难。我搜索了相当多,但没有发现类似的问题。相关代码如下:

代码语言:javascript
复制
$("#submit-search").submit(function(event) {
     // values separated by commas
    var ip = $("#search-nodes").val().split(',');
    // converts to integers
    for(var i=0; i<ip.length; i++) {ip[i] = parseInt(ip[i], 10);}
    visualization.selectAll('circle')
    .filter(function(d){
         return ip.indexOf(d.name) != -1 ? d.name : false;
    })
    .style("stroke-width", 15)
    .style("stroke-opacity", 0.75)
    .style("fill", "black");
});

由于indexOf函数只返回第一次命中,因此只突出显示了一个节点。我尝试使用jQuery的grep函数,但没有成功。

添加了可视化的图像。因为我在本地使用django框架,所以它不能公开使用。

编辑:包含的jsfiddle http://jsfiddle.net/ZqzbN/错误

节点具有属性:度中心性、组、名称、介数中心性,度边具有属性:源节点、目的节点、组

EN

回答 1

Stack Overflow用户

发布于 2014-02-27 23:38:23

我不熟悉d3js,但我能想到的最简单的解决方案是将过滤器功能分离到可视化范围之外。我推荐这样的东西。它只是一个伪代码:

代码语言:javascript
复制
var new_array;

for each node in ip:
  insert node.name into new_array if node.name != -1
end

visualization.do_your_stuff_with(new_array);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22070430

复制
相关文章

相似问题

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