如何返回具有多种排序和分组的排序列表?

发布于 2024-12-04 20:14:19 字数 525 浏览 0 评论 0原文

给定一个带有 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() 变量,例如空闲?

谢谢

Given a list() with ko mapped objects with the following fields:
object

name
status (on, off or idle)

I'm able to return the list grouped by status and then alphabetized as follows:

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

});

Problem is when a statu is set to idle, it is making 3 groups when I only want to status groupings at all times for on or off, ignoring any other status var.

Can this be made to only group statuses by ON & OFF and ignore all other status() variables like idle?

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

云淡风轻 2024-12-11 20:14:19

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

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

you would want to treat idle as "on" and then do the sorting/grouping that you had been doing:

  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; 
      }
  });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文