gpt4 book ai didi

javascript - 应用过渡时的 D3js 排序问题

转载 作者:行者123 更新时间:2023-11-28 09:42:20 25 4
gpt4 key购买 nike

我已经通过 d.id 绑定(bind)了一个数据集到 svg:g

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);
});

但如果我消除延迟,则可以很好地排序。

我的问题:我做错了什么吗?

最佳答案

我认为您观察到 d3.js 通常使用反向迭代的“优化”for 循环(请参阅 Are loops really faster in reverse? 以及其他引用文献)。

简单地逆转您的选择会有效吗?我不确定您要转换什么,因此您需要按特定顺序应用补间步骤。

关于javascript - 应用过渡时的 D3js 排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12229209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com