你的例子很好地说明了两者之间的区别。
在第一个例子中,仅d
用来。d
表示与给定选择相关的数据。在本例中,选择的数组div
元素被创建,每个元素对应一个data
array:
chart.selectAll("div")
.data(data)
.enter()
.append("div")
这不仅创建了一个数组div
元素,但将数据与每个元素相关联。这是在一对一的基础上完成的,每个div
对应于单个元素data
大批。一个与“4”相关,一个与“8”相关,依此类推。
如果我继续使用.text(function(d){...})
在选择数组上,d
将引用与每个选定 div 关联的数据,因此如果我在选择中使用以下方法:
.text(function(d) { return d; });
我的每一个div
s 将添加文本,其值为d
,或与元素关联的数据。
创建选择数组时,还会在数组中为它们指定一个索引。在您的示例中,这对应于数据数组中数据的位置。如果您的函数同时要求d
and i
, then i
将对应于该索引。回到我们的div
s, the div
与“4”关联的索引为“0”,与“8”关联的索引为“1”,依此类推。
同样重要的是要注意,请求的变量中使用的字符并不重要。函数调用中的第一个变量始终是数据,第二个变量是索引。如果我使用类似的方法
.text(function(cat,moose){ return( "data is: " + cat + " index is: " + moose)})
cat
将对应于选择的数据,并且moose
将对应于索引。