如何检查没有链接的节点的d3 js强制图并删除它们?

sud*_*ity 5 javascript layout graph d3.js force-layout

我想控制我的节点,以便它们中的每一个都是链接的,并且没有孤独的节点.

我的脚本每隔30秒从json查询添加一对新节点.如果任一新节点与现有节点重复,则仅使用唯一节点更新图形并将其链接到其他现有节点.

在这种情况下,我正在移除最旧的节点,以便在图表上保留最多10个节点.在这里,我似乎遇到了麻烦.如何删除节点并检查和删除任何未链接到任何其他节点的straggler节点?

该脚本基于knoren关于添加新节点的帖子.

                this.checkLength = function () {
                    if (nodes.length > 10) {
                        var i = links.shift();
                        nodes.splice(findNodeIndex(i),1);
                        update();
                    }
                } 
Run Code Online (Sandbox Code Playgroud)

Chr*_*che 2

根据 paxRoman 的建议,为了删除节点,您可以执行以下操作:

node.exit().remove();
Run Code Online (Sandbox Code Playgroud)

现在,要查找空节点,您可以使用weight力节点的属性,如力布局文档中所述:

权重 - 节点权重;关联链接的数量。

因此,最后,为了获取所有空节点,您可以执行以下操作:

force.nodes().filter(function(d){d.weight==0})

作为force你的部队布局。

另请注意,权重属性只会在force.start()调用时初始化,如文档中所述:

在将节点传递到布局之前不需要设置这些属性;如果未设置,则在调用 start 时布局将初始化合适的默认值