由于数据结构如下:排序和分组的Immutable.js列表
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"}
]
我试图进行排序和分组成以下条件:
- 的状态分组
- 有序按照状态确定订单是“生活”,“草稿”,“准备就绪”
- 每个状态中的项目应按日期排序,最近排在第一位。
我到目前为止有:
// 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动作的结果和排序到一个自定义的顺序,另外我怎样才能确保每个组中的所有项目都按日期排序?
按日期排序的帮助,看到这样的回答: https://stackoverflow.com/questions/46936825/how-can-i-sort-an-immutablejs-list-object-on-multiple-keys – KerSplosh