gpt4 book ai didi

javascript - .splice 方法未删除 d3 数组中的正确项目

转载 作者:行者123 更新时间:2023-12-03 07:27:17 25 4
gpt4 key购买 nike

我正在 d3 中使用散点图,图表上的点代表一篇论文。点被设置为一种类型。我要讲的点都是In_library类型的。 removeFromlibrary 是在下拉菜单的选项中定义的函数。在此函数中,我连接到数据库以更新 column 库中的 bool false 值。

但我也想从我的数据数组中删除此项。然后我想调用一个名为refreshGraph()的函数,它清除图形并使用更新的数组重新绘制点。我尝试从数组中删除此项(从而在调用刷新图形函数后将其从显示中删除)的方法是执行以下操作:

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

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

if (d.type === "In_library") {
allData.splice(d, 1);
}

refreshGraph();

})
}

因此,如果我选择的点是 In_library 类型(确实如此),我想从数组中删除该项目。这不起作用,当我选择一个点并选择菜单中的从库中删除选项时,它将删除类型为“In_library”的不同纸张。造成这种情况的可能原因是.splice方法的索引错误..?

我是 d3 的新手,因此感谢您的帮助!提前致谢!

最佳答案

根据评论,您对 splice 的使用是错误的(引用: MDN ) - 您需要使用数组中项目的索引,而不是输入项目本身。

利用Array.prototype.indexOf应该可以解决问题:

if (d.type === "In_library") {
var index_d = allData.indexOf(d);
if (index_d != -1) allData.splice(index_d, 1);
}

关于javascript - .splice 方法未删除 d3 数组中的正确项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35948608/

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