Javascript 根据D3.js中的数据可用性删除当前元素

Javascript 根据D3.js中的数据可用性删除当前元素,javascript,d3.js,Javascript,D3.js,我有一种方法,可以根据d3中绘制的一组圆提供的数据更新填充样式: 我的问题是,我能简单地这样做吗?在最后一个else子句中删除,而不返回任何内容来删除d3图形中的圆?或者,我是否需要先为圆设置颜色,然后在nodes.style…(例如nodes.filterfunction)之后使用一些选择将其删除{ 返回this.style.fill==“someColor”; }.data[]。退出。删除 这里的正确方法是什么?这实际上不是处理数据的D3方法,但原则上删除这样的元素没有问题。也就是说,您应该

我有一种方法,可以根据d3中绘制的一组圆提供的数据更新填充样式:

我的问题是,我能简单地这样做吗?在最后一个else子句中删除,而不返回任何内容来删除d3图形中的圆?或者,我是否需要先为圆设置颜色,然后在nodes.style…(例如nodes.filterfunction)之后使用一些选择将其删除{ 返回this.style.fill==“someColor”; }.data[]。退出。删除


这里的正确方法是什么?

这实际上不是处理数据的D3方法,但原则上删除这样的元素没有问题。也就是说,您应该能够从发布的函数中运行d3.selectthis.remove

不过,我建议重构代码,以便使用通常的输入/更新/退出模式识别要删除的元素

function updateFill(data) {
    nodes.style("fill", function(d) {
        var latest = data[d.id];
        if (latest === 1) {
            return "#000000";
        } else if (latest === 2) {
            return "#ffffff";
        } else if (latest === 3) {
            return "#d3d3d3";
        } else {
            // no data available, remove the current element/circle
        }
    }
}