函数(d)和函数(d,i)之间的区别?

13 javascript d3.js

每个D3js初学者都必须经历这个想法,我对此非常肯定.

我现在已经有几个小时了!!!!但我不知道如何使用它们和它们之间有什么区别

function(d){return d}

function(d,i){return d and some more custom code}
Run Code Online (Sandbox Code Playgroud)

例如--->

var data = [4,8,15,16,23,42];

    Function(d):::::

    chart.selectAll("div")
         .data(data)
         .enter().append("div")
         .style("width", function(d) { return d * 10 + "px"; })
         .text(function(d) { return d; });

    ------------------------------------------------------------------------------------

 Function(d*i):::::

    chart.selectAll("rect")
        .data(data)
        .enter().append("rect")
        .attr("y", function(d, i) { return i * 20; })
        .attr("width", x)
        .attr("height", 20);
Run Code Online (Sandbox Code Playgroud)

cke*_*sch 13

你的例子是两者之间差异的好插画家.

在第一个示例中,仅d使用.d表示与给定选择相关联的数据.在这种情况下,将div创建一个选定元素的数组,对应于data数组中的每个元素:

chart.selectAll("div")
     .data(data)
     .enter()
     .append("div")
Run Code Online (Sandbox Code Playgroud)

这不仅创建了一个div元素数组,而且还将数据与每个元素相关联.这是一对一地完成的,每个div对应于data数组中的单个元素.一个与'4'相关联,一个与'8'相关联,依此类推.

如果我继续使用.text(function(d){...})选择数组,d将引用与每个选定div相关的数据,所以如果我在我的选择中使用以下方法:

.text(function(d) { return d; });
Run Code Online (Sandbox Code Playgroud)

div的每个人都会添加文本,其值是d,或与元素相关的数据.

创建选择数组时,它们也会在数组中获得索引.在您的示例中,这对应于数据在数据数组中的位置.如果你的函数同时请求di,那么i将对应于这个索引.回到我们的divs,div与'4'相关联的索引为'0','8'的索引为'1',依此类推.

同样重要的是要注意所请求的变量中使用的字符无关紧要.函数调用中的第一个变量始终是数据,第二个变量是索引.如果我使用像这样的方法

.text(function(cat,moose){ return( "data is: " + cat + " index is: " + moose)})
Run Code Online (Sandbox Code Playgroud)

cat将对应于选择的数据,并且moose将对应于索引.


leo*_*hel 6

我希望这个例子可以帮到你.这是一个完整的网页,您可以开始播放:

<!doctype html>
<meta charset="utf-8">
<title>my first d3</title>
<body>

<script>
  var data=[10,20,30,40];

  var lis = d3.select("body")
              .append("ul")
              .selectAll("li")
              .data(data)

  lis.enter()
     .append("li")
     .text(function(d,i){ return "item n° "+i+" has value: "+d})
</script>
Run Code Online (Sandbox Code Playgroud)

基本上d是数据的价值,而且i是他的指数.你可以在这看一下这个例子:http://jsfiddle.net/M8nK8/