我的数据集已通过svg:g
d.id
var categorized = g1.selectAll("g.node")
.data(dataset, function(d){return d.id})
.classed('filtered', false);
categorized.enter()
.append("g")
.attr("class", "node")
...
我使用一个函数从这样的数据值中对它进行排序:
var sorted = dataset
.filter(function(d) { return d.notation[3].value >=50 } )
.sort(function(a, b) { return d3.descending(a.notation[3].value,
b.notation[3].value) });
当我console.log
var filtered = g1.selectAll("g.node")
.data(sorted, function(d) {return d.id})
.classed('filtered', true);
如果我console.log
,它仍然是正确的顺序,
但如果我申请延迟,则会反转结果顺序
scored.transition()
.delay(500).duration(1000)
.attr("id", function(d) {
console.log(d.id);
});
但如果我删除延迟,请保持良好排序。
我的问题:我做得不好吗?
答案 0 :(得分:0)
我认为你在观察d3.js通常使用反向迭代的“优化”for循环(参见Are loops really faster in reverse?和其他参考文献)。
是否可以简单地撤销您的选择?我不确定您要转换的内容,以便您需要按特定顺序应用补间步骤。