在d3.js中,如何将当前选择传递给.each()回调?

在d3.js中,如何将当前选择传递给.each()回调?,d3.js,D3.js,我有一个数据数组,如果我想将这些数据呈现为文本,我将使用下一个代码 footer_item = svg_selection.append('g') .attr('class', 'footer_data') .selectAll('g') .data(data) .enter() .append('g') footer_item.append('text') .text((d) => d) ... 如果我想画一些形状而不是文本呢。我可以使

我有一个数据数组,如果我想将这些数据呈现为文本,我将使用下一个代码

footer_item = svg_selection.append('g')
    .attr('class', 'footer_data')
    .selectAll('g')
    .data(data)
    .enter()
    .append('g')

footer_item.append('text')
  .text((d) => d)
  ...
如果我想画一些形状而不是文本呢。我可以使用这种方法

footer_item
  .each((d) => {
    // draw some shape
    // don't know how to refer to footer_pointer
     draw_my_shape(footer_item_pointer, d.x, d.y);
  })

function draw_my_shape(footer_item_pointer, x, y){

    footer_item_pointer
      .append('circle')
      .attr('cx', x)
      .attr('cy', y)
      ... 
}
这种方法的唯一问题是,我将丢失指向
footer\u项的指针。我需要指向
footer\u item
的指针来在
g
元素中绘制我的形状

是否可以使用
.each()
函数将
footer\u项
指针发送到我的绘图回调


我可以使用
.call()
函数来实现吗?我尝试过,但是
d
变量将包含完整选择和完整数据。我将再次回到我开始的地方。

如果我理解正确,您希望访问
每个
函数内部的
footer\u项。您可以通过不使用箭头函数,并在函数中使用
this
的范围值来执行此操作:

footer_item.each(function(d, i) {
        //"this" refers to the <g> html element that footer_item points to
        var foo = d3.select(this);
     });

你为什么认为你失去了你的推荐人?根据你提供的代码,我看不到支持这个假设的证据。我更新了我的问题。你能再看一次这个问题吗?你仍然可以用
节点[i]
的箭头函数
(d,i,nodes)=>{…}
访问
这个
。看见
foo.append('circle').attr(...
foo.append('rect').attr(...