Javascript 如何通过索引从d3集合中获取项目?

Javascript 如何通过索引从d3集合中获取项目?,javascript,d3.js,Javascript,D3.js,我有一个数组[“a”、“b”、“c”、“d”],我从中在页面上构建了两个svg对象。第一个是图表,第二个svg是该图表的控件。两者都有绑定到数组中相同数据的元素。我想使用控件区域作为按钮,根据控件区域中单击的按钮使图表元素处于活动状态 如果我单击a按钮,我将在其单击事件中接收索引,并希望通过用颜色高亮显示a图表元素来激活它。 首先,我创建图表元素,然后创建按钮区域,两种方式都相同,如下所示: elements = d3.select('g.elements') 因此,我有图表的元素对象

我有一个数组
[“a”、“b”、“c”、“d”]
,我从中在页面上构建了两个svg对象。第一个是图表,第二个svg是该图表的控件。两者都有绑定到数组中相同数据的元素。我想使用控件区域作为按钮,根据控件区域中单击的按钮使图表元素处于活动状态

如果我单击
a
按钮,我将在其单击事件中接收索引,并希望通过用颜色高亮显示
a
图表元素来激活它。 首先,我创建图表元素,然后创建按钮区域,两种方式都相同,如下所示:

    elements = d3.select('g.elements')
因此,我有图表的
元素
对象,以及来自单击事件的索引,我希望可以使用它以d3方式从该对象获取相应的项


请告知我如何从
元素
中正确获取具有特定索引的对象,以便我可以使用d3方法和属性处理它,而不仅仅是作为DOM元素?

不完全清楚。是否要执行此操作:

d3.select("elements").each(function(d,i) {
    if(i == myIndex) {
        //do stuff
    }
})
这也可以使用过滤器/选择来完成


我的观点是,d3.js方法是注释原始数据,然后再次绘制整个视图。因此,如果您的数据是
[{id:“a”},{id:“b”},…]
,那么当按下“a”时,您可以将对象更新为:
{id:“a”,按下:true}
,然后根据新数据重新绘制两个svg对象(根据“按下”的存在使“a”处于活动状态)是真的。

在所有处理程序中,都会传递数据和索引,例如,
.on(“click”,function(d,i){//d是数据,i index,this DOM元素});
我需要修改的不是
这个
而是另一个图表中的一个元素,但链接到与单击的元素相同的数据。现在我使用
元素。选择(“:nth child({i+1})”.attr(“不透明度”,1)
(coffeescript)但我觉得它既不合适也不优雅。然后你需要设置一个合适的ID或类,允许你选择给定数据的元素。示例/更多解释@Larskothoff的建议:我认为使用
n个child
,只要你小心地将所有相关元素保留在ir自己的组,并按照正确的顺序。