Sorting d3:执行。按类排序
我试图理解.sort()方法是如何工作的 我的实现应该非常简单,使用以下方法:Sorting d3:执行。按类排序,sorting,d3.js,Sorting,D3.js,我试图理解.sort()方法是如何工作的 我的实现应该非常简单,使用以下方法: .sort(function (a, b) { }); 我想检查元素是否是某个类的成员。如果是,我想把它放在最上面。否则,它应该降到底部。模式是什么 排序位于geojson投影的一组状态路径上: d3.json("./data/states.json", function(us) { mapSvg.selectAll("path") .data
.sort(function (a, b) {
});
我想检查元素是否是某个类的成员。如果是,我想把它放在最上面。否则,它应该降到底部。模式是什么
排序位于geojson投影的一组状态路径上:
d3.json("./data/states.json", function(us) {
mapSvg.selectAll("path")
.data(us.features)
.enter()
.append("path")
.attr("d", path).attr("class",function(d){return "border2 thestates"})
});
}
如果它们有类,我想把一些状态放在前面。函数
.sort()
的返回值应该如下所示(从):
它应该返回负值、正值或零值。如果是负数,那么a应该在b之前;如果为正,则a应位于b之后;否则,a和b被视为相等,并且顺序是任意的
所以在你的情况下,应该是这样的:
function(a, b) {
if(a.memberOfClass() && !b.memberOfClass()) {
return -1;
} else if(b.memberOfClass()) {
return 1;
} else {
return 0;
}
}
您可以简化此操作,因为true
的计算结果也为1
:
function(a, b) {
return -a.memberOfClass() + b.memberOfClass();
}
您正在尝试对哪些对象进行排序?也许可以举个例子?我已经添加了一些信息,谢谢。我不知道为什么我把事情弄得这么复杂。我使用了简化代码的变体。您还可以在第一个选项中使用三元运算符。