假设您有一个绑定(bind)了一些数据的选择,并且您使用典型的内联匿名函数来访问该数据:
d3.select("#whatever").each(function(d,i,q) {console.log(d,i,q)})
我们都知道第一个变量是数据,第二个是数组位置。但是第三个变量(在这种情况下为 q)代表什么?到目前为止,在我测试过的所有东西中,它总是归零。
最佳答案
secret 的第三个参数仅在您拥有 nested selections 时使用。 .在这些情况下,它保存父数据元素的索引。例如考虑这个代码。
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
的索引元素。
关于d3.js - D3匿名函数中的第三个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20437116/