Javascript D3在屏幕上留下错误的元素

Javascript D3在屏幕上留下错误的元素,javascript,d3.js,Javascript,D3.js,我的d3选择从一个大数据集开始,为SVG中的每个元素添加一个圆圈,并设置圆圈元素的ID以匹配它所表示的数据项的ID 然后,我对同一个选择调用.data(),传入原始选择的较小子集。正如预期的那样,我这样做后屏幕上的圆圈数与较小数据集中的项目数相匹配。但是,当我检查屏幕上的元素时,它们的ID与新数据集中项目的ID不匹配 为什么会这样 如果不将键函数传递给数据,则数据将通过其位置与现有元素关联 你可能想要像这样的东西 .data(data, function(d) { return d.id; })

我的d3选择从一个大数据集开始,为SVG中的每个元素添加一个圆圈,并设置圆圈元素的ID以匹配它所表示的数据项的ID

然后,我对同一个选择调用
.data()
,传入原始选择的较小子集。正如预期的那样,我这样做后屏幕上的圆圈数与较小数据集中的项目数相匹配。但是,当我检查屏幕上的元素时,它们的ID与新数据集中项目的ID不匹配


为什么会这样

如果不将键函数传递给数据,则数据将通过其位置与现有元素关联

你可能想要像这样的东西

.data(data, function(d) { return d.id; });
从:

为了控制数据如何连接到元素,可以指定一个键函数。这将替换默认的索引行为;对新数据数组中的每个元素调用一次键函数,对选择中的每个现有元素调用一次键函数


啊哈!我知道这与关键功能有关,但我还没有完全理解这些功能。这使得它点击。谢谢,当它让我接受的时候。(附言:它工作得很好)