Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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
Javascript 如何返回包含多个排序和分组的排序列表?_Javascript_Jquery_Knockout.js - Fatal编程技术网

Javascript 如何返回包含多个排序和分组的排序列表?

Javascript 如何返回包含多个排序和分组的排序列表?,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,给定一个列表(),其中包含具有以下字段的ko映射对象: 反对 名字 状态(开、关或怠速) 我可以返回按状态分组的列表,然后按如下字母顺序排列: this.list().sort(function (a, b) { if (a.status() == b.status()) { return a.name().toLowerCase() < b.name().toLowerCase() ? -1 : 1; } else { return a.

给定一个列表(),其中包含具有以下字段的ko映射对象: 反对

名字 状态(开、关或怠速)

我可以返回按状态分组的列表,然后按如下字母顺序排列:

this.list().sort(function (a, b) {

    if (a.status() == b.status()) {
        return a.name().toLowerCase() < b.name().toLowerCase() ? -1 : 1;
    } else {
        return a.status() > b.status() ? -1 : 1;
    }

});
this.list().sort(函数(a,b){
如果(a.status()==b.status()){
返回a.name().toLowerCase()b.status()?-1:1;
}
});
问题是当一个statu设置为idle时,当我只想在任何时候为on或off设置状态分组时,它会生成3个组,而忽略任何其他状态变量

这是否可以仅通过开和关对状态进行分组,并忽略所有其他status()变量(如idle)


谢谢

您希望将idle视为“开”,然后执行您一直在执行的排序/分组:

  this.list().sort(function (a, b) {
      var aStatus = a.status() !== "idle" ? a.status() : "on",
          bStatus = b.status() !== "idle" ? b.status() : "on"
      if (aStatus == bStatus) {
          return a.name().toLowerCase() < b.name().toLowerCase() ? -1 : 1;
      } else {
          return aStatus > bStatus ? 1 : -1; 
      }
  });
this.list().sort(函数(a,b){
var aStatus=a.status()!=“空闲”?a.status():“打开”,
b状态=b.状态()!=“空闲”?b.状态():“打开”
如果(aStatus==bStatus){
返回a.name().toLowerCase()bStatus?1:-1;
}
});

您希望将空闲视为“开”,然后执行您一直在执行的排序/分组:

  this.list().sort(function (a, b) {
      var aStatus = a.status() !== "idle" ? a.status() : "on",
          bStatus = b.status() !== "idle" ? b.status() : "on"
      if (aStatus == bStatus) {
          return a.name().toLowerCase() < b.name().toLowerCase() ? -1 : 1;
      } else {
          return aStatus > bStatus ? 1 : -1; 
      }
  });
this.list().sort(函数(a,b){
var aStatus=a.status()!=“空闲”?a.status():“打开”,
b状态=b.状态()!=“空闲”?b.状态():“打开”
如果(aStatus==bStatus){
返回a.name().toLowerCase()bStatus?1:-1;
}
});

谢谢RPN,但它不再按状态=='on'和状态()='off'分组。我只想按这两种状态分组,忽略其他状态,然后按名称()在这些组中按字母顺序排列。想法?我还想包括状态()为idle的项目,我希望它处于组的状态。可能吗?谢谢RPN,但不再按状态=='on'和状态()='off'分组。我只想按这两种状态分组,忽略其他状态,然后按名称()在这些组中按字母顺序排列。想法?我还想包括状态()为idle的项目,我希望它处于组的状态。可能的