如何从d3中的列表中删除所选项目

时间:2016-03-07 12:58:45

标签: javascript d3.js

我正在使用d3散点图,当我右键点击一个点时,会出现一个下拉菜单菜单。当我单击一个选项(称为"从库中删除")时,我想从数组中删除所选的项目/点(libraryData)。我是d3的新手,所以对我来说有意义的只是

libraryData.remove(d);

我知道这不是一个功能。我找到了类似于array.splice()函数的东西。但是当我不知道我想要在数组中移除的项目的位置时,我无法弄清楚我是如何应用的。 这是我在菜单选项中定义我的功能的地方:

{
title: 'Remove from Library',
action: function (elem, d, i) {

        d3.json("connection6.php?paperID="+d.ID, function(error, dataJson) {

            libraryData.?????();
                console.log(libraryData);   
        })
    }

任何帮助都表示赞赏,因为你可以说我是d3的新手!

1 个答案:

答案 0 :(得分:1)

您使用remove(d)开启了正确的道路。

您可以使用:

d3.select(selectedElement).remove();

如下所示,如果您要删除ID为' elephant'它会是这样的:

nodes.each(function(d){
  if(d.id ==='elephant'){
    d3.select(this).remove();
  }
}

即如果您在数据集中有ID。你可以在这张支票中使用任何东西。

甚至更简单,如果您知道ID是大象,那就是:

d3.select('#elephant').remove();

或者说你有一个数据数组,你只需将数组拼接到正确的索引。

例如:

假设您有一些数据,并且您想删除ID为' elephant&#39 ;;

的数据

使用id=elephant

循环并删除元素
for(i=0;i<data.length;i++){
  if(data[i].id === 'elephant'){
    data.splice(i--,1);
  }
}

注意我使用i--。这是为了更新数组,否则如果你想删除多个元素,你将获得错误的索引。

然后,一旦你拼接它,只需更新你的可视化。