.data(function(d){return d;})在d3中返回什么?

时间:2014-02-14 17:40:49

标签: javascript d3.js

var matrix = [
  [11975,  5871, 8916, 2868],
  [ 1951, 10048, 2060, 6171],
  [ 8010, 16145, 8090, 8045],
  [ 1013,   990,  940, 6907]
];

var tr = d3.select("body").append("table").selectAll("tr")
    .data(matrix)
  .enter().append("tr");

var td = tr.selectAll("td")
    .data(function(d) { return d; })
  .enter().append("td")
    .text(function(d) { return d; });

我不明白d代表什么。有人可以如此友好地引导我完成代码吗?

参考:https://github.com/mbostock/d3/wiki/Selections#wiki-remove

1 个答案:

答案 0 :(得分:3)

你在这里有一个nested selection,即你正在做出选择,然后根据它进行选择。这也是.data()参数中函数的解释 - 它嵌套在第一个函数之下,因此它可以引用它。

特别是,您在.data(matrix)中传入了一个数组数组。 D3将为该矩阵的每个元素(即每个数组)执行某些操作。在这里,它绑定到附加的tr元素。那么当你再次调用.data()时,你可以引用绑定到这些元素的数据(tr s)。 function(d) { return d; }只是说D3应该使用已绑定到它的数据。由于这是一个数组,D3将为它的每个元素做一些事情,即附加表格单元格。