Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting d3:执行。按类排序_Sorting_D3.js - Fatal编程技术网

Sorting d3:执行。按类排序

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()方法是如何工作的

我的实现应该非常简单,使用以下方法:

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

您正在尝试对哪些对象进行排序?也许可以举个例子?我已经添加了一些信息,谢谢。我不知道为什么我把事情弄得这么复杂。我使用了简化代码的变体。您还可以在第一个选项中使用三元运算符。