我正在使用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的新手!
答案 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--
。这是为了更新数组,否则如果你想删除多个元素,你将获得错误的索引。
然后,一旦你拼接它,只需更新你的可视化。