由於數據結構如下:排序和分組的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