假设您有一个绑定了一些数据的选择,并且使用典型的内联匿名函数访问该数据:
d3.select("#whatever").each(function(d,i,q) {console.log(d,i,q)})
我们都知道第一个变量是数据,第二个变量是数组位置。但是第三个变量(在这种情况下为q)代表什么?到目前为止,在我测试过的所有内容中,它总是归零。
秘密的第三个参数仅在嵌套选择时才有用。在这些情况下,它保存父数据元素的索引。例如考虑以下代码。
var sel = d3.selectAll("foo").data(data).enter().append("foo");
var subsel = sel.selectAll("bar").data(function(d) { return d; }).enter().append("bar");
假设这data
是一个嵌套结构,您现在可以执行此操作。
subsel.attr("foobar", function(d, i) { console.log(d, i); });
毫不奇怪,这会将数据项记录在嵌套及其索引中。但是您也可以这样做。
subsel.attr("foobar", function(d, i, j) { console.log(d, i, j); });
在这里d
,i
仍然指的是相同的事物,但是j
指的是父数据元素的索引,即元素的索引foo
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句