.splice 方法未删除 d3 中数组中的正确项
.splice method not removing correct item in array in d3
我正在使用d3中的散点图,图表上的点代表一篇论文。点设置为文字。我想说的点都是In_library型的。removeFromlibrary是一个在下拉菜单的选项中定义的函数。在此函数中,我连接到数据库以更新库列中的布尔假值。
但我也想从我的数据数组中删除这个项目。然后我想调用一个名为 refreshGraph() 的函数,该函数清除图形并使用更新的数组重新绘制点。我尝试从数组中删除此项(从而在调用 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 的新手,所以任何帮助不胜感激!提前感谢!
根据注释,您对拼接的使用是错误的(参考: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
- .splice 方法未删除 d3 中数组中的正确项
- 对象数组上的 JS .splice()
- 为什么调用 split 和 splice 会给出空数组
- 数组不会分裂(使用 splice(0))
- .splice() - 如何保护 oryginal 数组
- 使用splice-JavaScript移除一个元素后,移动数组中的所有元素
- 可以使用Array.splice()通过在数组最后一个元素之外的索引处添加元素来创建稀疏数组吗
- javascript array.splice()不会删除数组中的元素
- 在.splice()之后重置角度函数中数组的副本
- 为什么splice不能填充javascript数组上的漏洞
- Splice()不更新knockout.js中数组的项顺序
- JavaScript splice()方法如果splice()的第一个参数为-1,则删除数组的最后一项
- 在Javascript中使用splice删除对象数组中某个位置后的所有元素
- 在Angular数组上使用splice()时,jQuery选择器跳转到下一项
- Splice方法不从数组中删除项
- Splice没有从数组中移除项目
- 使用split、splice获取数组中玩家的姓氏
- .splice()不会完全缩短我的数组
- JavaScript splice()方法不删除数组中时间项是半个小时