为什么我的D3.js下拉过滤器是随机的?

时间:2016-05-27 17:33:54

标签: javascript json d3.js drop-down-menu filter

我在这里构建了下表:

https://bl.ocks.org/simonbreton/d4d2ea338d1bacc6ce3d0a295529bcb4

但是,您可以看到,如果您尝试选择其他选项,则数据无法正确更新。 enter image description here

有些没有出现(例如图片中的蝙蝠侠),其他人没有删除。再次在图片中说明,我预计会删除超人,船长和Antman只看蝙蝠侠数据。

我的代码出了什么问题?

非常感谢!

1 个答案:

答案 0 :(得分:0)

默认情况下,d3通过数组中的索引标识数据。它不适合过滤 - 一些元素被删除,它会改变后续元素的索引。在数据绑定中添加key function可能会有所帮助,但是,数据集也存在问题。它包含重复项,没有可以区分它们的属性。如果名称是唯一的,您可以使用如下的键函数:

var rows = tbody.selectAll("tr")
                .data(filterdata, function (d) { return d.name})