1
我很难理解selection.filter
。我想这一点,在一个空白文档:困惑selection.filter
d3.selectAll('rect')
.data([1, 2, 3])
.filter(function(d) { return d>1; })
// [ Array[0] ]
我预想的选择有两个元素,但它有0也许是因为我有一个空的更新选择工作......
d3.selectAll('rect')
.data([1, 2, 3])
.enter()
.filter(function(d) { return d>1; })
// []
现在看来我甚至没有选择。
如果DOM元素存在
d3.selectAll('rect').data([1, 2, 3])
.enter().append('rect')
,然后我选择和过滤
d3.selectAll('rect').filter(function(d) { return d>1; })
// [ Array[2] ]
它似乎工作。那么这里发生了什么?筛选器似乎在this example中对不与任何DOM元素对应的选择工作,所以我期望它在我上面的第一个示例中工作。
整蛊!非常感谢Lars。这就是我通常所做的,我只是看到了这个例子,并且想惯用地做事情。 –
没问题,那个例子中的缩进非常容易让人误解。 –