Javascript D3在屏幕上留下错误的元素
我的d3选择从一个大数据集开始,为SVG中的每个元素添加一个圆圈,并设置圆圈元素的ID以匹配它所表示的数据项的ID 然后,我对同一个选择调用Javascript D3在屏幕上留下错误的元素,javascript,d3.js,Javascript,D3.js,我的d3选择从一个大数据集开始,为SVG中的每个元素添加一个圆圈,并设置圆圈元素的ID以匹配它所表示的数据项的ID 然后,我对同一个选择调用.data(),传入原始选择的较小子集。正如预期的那样,我这样做后屏幕上的圆圈数与较小数据集中的项目数相匹配。但是,当我检查屏幕上的元素时,它们的ID与新数据集中项目的ID不匹配 为什么会这样 如果不将键函数传递给数据,则数据将通过其位置与现有元素关联 你可能想要像这样的东西 .data(data, function(d) { return d.id; })
.data()
,传入原始选择的较小子集。正如预期的那样,我这样做后屏幕上的圆圈数与较小数据集中的项目数相匹配。但是,当我检查屏幕上的元素时,它们的ID与新数据集中项目的ID不匹配
为什么会这样 如果不将键函数传递给数据,则数据将通过其位置与现有元素关联 你可能想要像这样的东西
.data(data, function(d) { return d.id; });
从:
为了控制数据如何连接到元素,可以指定一个键函数。这将替换默认的索引行为;对新数据数组中的每个元素调用一次键函数,对选择中的每个现有元素调用一次键函数
啊哈!我知道这与关键功能有关,但我还没有完全理解这些功能。这使得它点击。谢谢,当它让我接受的时候。(附言:它工作得很好)