Javascript 使用d3仅修改已更改的元素

Javascript 使用d3仅修改已更改的元素,javascript,d3.js,Javascript,D3.js,我使用d3在页面上绘制矩形网格 有一个数组确定网格中每个单元格的颜色。有时,此数组的元素会更新以更改其颜色 是否有d3模式或方法仅更改特定元素?我有一个渲染函数,可以在d3中重新渲染整个网格,但我不想在只有少数单元格改变颜色时迭代(并更改填充)每个rect元素,因为可能有数千个单元格。我只是检查了源代码,似乎没有。如果性能是一个问题,我在每次调用.enter时要做的就是通过设置自定义.attr('data-lastColor')来跟踪任何更改。在每次.data更新调用之后,我都会这样做 .dat

我使用d3在页面上绘制矩形网格

有一个数组确定网格中每个单元格的颜色。有时,此数组的元素会更新以更改其颜色


是否有d3模式或方法仅更改特定元素?我有一个渲染函数,可以在d3中重新渲染整个网格,但我不想在只有少数单元格改变颜色时迭代(并更改填充)每个rect元素,因为可能有数千个单元格。

我只是检查了源代码,似乎没有。如果性能是一个问题,我在每次调用
.enter
时要做的就是通过设置自定义
.attr('data-lastColor')
来跟踪任何更改。在每次
.data
更新调用之后,我都会这样做

.data(dataSet)
.attr('color', function(d){ 
    var theElement = d3(this);
    var newColor;

    //set the new color here, under whatever conditions you want
    if (foo==bar) { 
        newColor = 'green' 
    } else {
        newColor = 'red'
    } 

    if theElement.attr('data-lastColor') != newColor {
        theElement.attr('color') = newColor;
        theElement.attr('data-lastColor') = newColor;
    } else {
        //Don't do anything if the new color is the same as this color, saving valuable computing time
    }
})

如果答案边缘有点粗糙,很抱歉,但它应该满足您的要求:)

嘿,谢谢。很奇怪,d3没有一种“绑定”到数据集的方式。我只是在我要更改的点上添加一点脏东西。