【问题标题】:How to return a sorted list with multiple sorts and groupings?如何返回具有多个排序和分组的排序列表?
【发布时间】:2011-09-14 03:48:58
【问题描述】:

给定一个带有 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;
    }

});

问题是当状态设置为空闲时,当我只想始终将状态分组设置为开或关时,它会创建 3 个组,而忽略任何其他状态变量。

这是否可以仅按 ON 和 OFF 对状态进行分组,而忽略所有其他 status() 变量,例如空闲?

谢谢

【问题讨论】:

    标签: javascript jquery knockout.js


    【解决方案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; 
          }
      });
    

    【讨论】:

    • 感谢 RPN,但它不再按状态 == 'on' 和 status() == 'off' 分组。我只想按这两种状态分组,忽略其他状态,然后按名称()在这些组中按字母顺序排列。想法?
    • 另外,我仍然想包含 status() 为空闲的项目,我希望它位于状态 ON 组中。可能吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多