【发布时间】:2016-09-27 09:43:36
【问题描述】:
给定以下数据结构:
var MyData = [
{"id": 1, "status": "live", dateCreated: "12:00:00 01/02/2016"},
{"id": 2, "status": "draft", dateCreated: "13:00:00 03/12/2015"},
{"id": 3, "status": "ready", dateCreated: "16:00:00 04/09/2016"},
{"id": 4, "status": "ready", dateCreated: "10:00:00 01/10/2016"},
{"id": 5, "status": "live", dateCreated: "09:00:00 05/07/2015"},
{"id": 6, "status": "draft", dateCreated: "08:00:00 11/03/2016"},
{"id": 7, "status": "ready", dateCreated: "20:00:00 12/02/2016"}
]
我正在尝试将其分类并分组为以下条件:
- 按状态分组
- 按状态排序,以便订单为“live”、“draft”、“ready”
- 每个状态中的项目应按创建日期排序,最近的在前。
到目前为止我所拥有的:
// this object will help us define our custom order as it's not alphabetical
const itemOrder = {
'live': 1,
'ready': 2,
'draft': 3
};
const sortByStatus = (statusA, statusB) => {
if ( itemOrder[statusA] > itemOrder[statusB] ) return 1;
if ( itemOrder[statusA] < itemOrder[statusB] ) return -1;
return 0;
};
return List(MyData)
.groupBy(item => item.status)
.sort( sortByStatus )
暂时忽略我还没有到可以按日期排序的地步:)
上面的问题似乎是 sortByStatus 正在传递 IndexedIterable ,它是整个组,但不是关键,所以我无法按该键对其进行排序。我认为我可能需要使用 sortBy,但 Immutable.js 文档难以理解,并且没有示例说明如何实现这一点。
那么,问题是:如何获取 groupBy 操作的结果并将其排序为自定义顺序,另外如何确保每个组中的所有项目都按日期排序?
【问题讨论】:
-
有关按日期排序的帮助,请参阅此答案:stackoverflow.com/questions/46936825/…