Javascript 如何在d3中使用参数。选择所有('line')。每个

Javascript 如何在d3中使用参数。选择所有('line')。每个,javascript,d3.js,Javascript,D3.js,我需要创建一个数组,其中包含SVG中所有行的所有端点。 为此,我想用d3遍历所有行。 现在了解一下,这个函数的参数包含什么 d3.select('svgEditor').selectAll('line').each(function(d,i){}); 我知道I是索引,但在这种情况下,d总是空的。 里面不应该有某种迭代元素或数据吗? 迭代的方式是否正确,或者是否更简单、更快,可能是使用一些函数,如map?访问行的正确方式是d3。在函数中选择此选项。d参数是连接的基准。我不知道是否有更好的迭代方法

我需要创建一个数组,其中包含SVG中所有行的所有端点。 为此,我想用d3遍历所有行。 现在了解一下,这个函数的参数包含什么

d3.select('svgEditor').selectAll('line').each(function(d,i){});
我知道I是索引,但在这种情况下,d总是空的。 里面不应该有某种迭代元素或数据吗?
迭代的方式是否正确,或者是否更简单、更快,可能是使用一些函数,如map?

访问行的正确方式是d3。在函数中选择此选项。d参数是连接的基准。我不知道是否有更好的迭代方法,但是。每个函数都适合我

以下是使用的示例。每个来自:


文档说明。每个函数的三个参数是1数据、2当前索引和3选择中的节点

在此处输入答案,以防任何人想要使用ES6箭头功能,或者他们在使用已接受答案中使用的“this”关键字时遇到问题

在每个函数中选择元素时使用“this”很好,但我在SPA应用程序中使用“this”时遇到了问题,在SPA应用程序中,“this”通常意味着其他东西,可能会让人困惑

为了避免使用“this”,代码可以从以下位置更改:

d3.select('svgEditor').selectAll('line').each(function(d,i){
  d3.select(this).append.....
});
致:


这篇文章有助于解释

是的,我知道我需要使用d3。选择此选项,但我想知道其中应该包含哪些参数。或者,每个JavaScript函数都是相同的,有时包含数据,有时不包含数据?首先,不,JavaScript函数可以根据需要具有任意多的参数。第二,你的d不应该是空的。您可以访问数据d的属性。如果这不起作用,那么就出问题了。通常,您应该能够像这样使用数据:parent.eachfunctionp,j{d3.selectthis.selectAll.child.textd=>child${d.name}of${p.name};};如果你不需要参数,你也可以放入一个没有参数的函数,因为javascript可以处理它。如果我记录了d,我在控制台中就没有定义。所以我问自己,如果我需要索引,我是否总是必须设置这两个参数?我认为对于函数来说,如果我把索引命名为I或ind或index或其他任何东西都没有区别,所以函数必须知道,第二个参数是索引?是吗?是的,函数总是知道第二个参数是索引。。不管你怎么称呼它,你能投票赞成我的答案吗。。我还没有名声,我不能再回答任何问题了-
d3.select('svgEditor').selectAll('line').each(function(d,i){
  d3.select(this).append.....
});
d3.select('svgEditor').selectAll('line').each((data, i, nodes) => {
  d3.select(nodes[i]).append....
});