【发布时间】:2011-11-19 00:00:32
【问题描述】:
我可能想出了一个非常粗略的方法来完成这种事情,但我想我会问在场的许多专家。基本上,我有一个如下所示的数组:
var bugs = [
{
id: "197526",
title: "Updating Lighthouse",
summary: "Enhancing the UI of Lighthouse",
status: "Active",
project: "Lighthouse",
area: "Internal Web Applications",
hours: 19
},
{
id: "190328",
title: "Adding Login Authentication to Lighthouse",
summary: "Create a login authentication process for Lighthouse",
status: "Active",
project: "Lighthouse",
area: "Administration",
hours: 12
},
...
{
id: "187562",
title: "Create a Maintenance Page",
summary: "Create a maintenance page to be displayed with the company site is down",
status: "Resolved",
project: "Other",
area: "Internal Web Projects",
hours: 4
},
];
基本上,该数组包含几个“错误”,每个错误都有一个 id、title、summary、status、project、area 和 hours 属性。这些错误中的每一个都将显示在我的 Web 应用程序上,但我允许用户选择如何对它们进行分组;按状态、项目或区域。根据他们从上面的选择框中选择的三个中的哪一个,我希望能够对所有错误进行排序,并按他们选择的任何类别对它们进行分组。然后,在显示它们时,为该类别的每个当前选项设置一个简单的标题。例如,如果他们要按状态排序,它会是这样的:
Group By: Status
Active
------
Bug with status: "active"
Bug with status: "active"
Bug with status: "active"
Resolved
--------
Bug with status: "resolved"
Bug with status: "resolved"
我是否应该遍历整个错误数组,并根据要排序的类别,为该类别的每个可能选项创建一个新数组并向它们添加适当的错误?所以在上面的例子中,创建新数组var activeBugs = [] 和var resolvedBugs = []?如果是这样,那么我的问题将是知道有哪些可能的选择。在创建这些新数组之前,我是否应该首先遍历整个 bugs 数组以查看所需组类别存在哪些可能的选项?
在不求助于其他 jQuery 插件的情况下,最好的方法是什么?
【问题讨论】:
-
对此有一个数组方法-.sort()
-
如果您实际上不需要对它们进行排序,而只是想按特定字段对它们进行分组,我根本不会对它们进行排序。您使用什么来呈现这些列表(即,这是否会导致您需要对数组进行排序或为每个排序属性构建单独的数组)?
-
我想我可以用它来按某个类别对数组本身进行排序。从那里,我只需要在标题更改为不同选项时打印出来?
-
@Dave Ward:嗯,我使用 AJAX 调用来填充我想要分组显示的原始
bugs数组。 servlet 本身访问数据库以获取错误信息。所以我想我可以在 AJAX 调用期间传递groupBy选项并将其添加到我的 SQL 语句的GROUP BY部分...... -
这不是
.sort()的工作,您正在寻找.filter()。不幸的是,IE 支持不好(仅限 9),因此您可能希望也可能不希望使用它,具体取决于计划的用途。 编辑:忘记包含链接 - 如果您对 IE 解决方法感兴趣,可以找到 proper code at MDN
标签: javascript jquery arrays sorting key