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

时间:2011-09-14 03:48:58

标签: javascript jquery knockout.js

给定一个带有ko映射对象的list(),其中包含以下字段: 对象

  

名   状态(开,关或空闲)

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

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

});

问题是当一个statu被设置为空闲时,当我只想要打开或关闭状态分组时,它正在制作3个组,忽略任何其他状态var。

这是否只能通过ON&amp; amp;关闭并忽略所有其他status()变量,如idle?

谢谢

1 个答案:

答案 0 :(得分: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; 
      }
  });