D3.js:如何获取选择索引而不是数据索引?

时间:2016-04-18 16:53:59

标签: d3.js

有很多实例我需要根据其选择组(更新,输入,退出)中的元素索引,而不是数据中的索引。我怎样才能得到这个指数?

例如,如果我退出4个元素。

legends.exit()
    .transition()
    .delay(d=>i*25)
    .style("opacity",0)
在这种情况下,

i是[8,12,15,20]。如何将索引设置为[0,1,2,3];

我的快速而肮脏的解决方案就是这样。我可以在d3的背景下这样做吗?

var i = 0;
legends.exit()
    .transition()
    .delay(d=>i++*25)
    .style("opacity",0)

1 个答案:

答案 0 :(得分:0)

您应该能够将以下代码调整到您的解决方案中:

.delay(function(d,i){ return (i-legends.size()); })

或者,以下工作在我的小测试示例中,但我不确定为什么。 filter是必要的。

legends.exit().filter(function(d){return true;})
    .transition()
    .delay((d,i)=>i*25)
    .style("opacity",0)

我最好的猜测是应用过滤器“重置”选择的索引。