: Bu koşullar içinesıralama ve Grup bir aşağıdaki veri yapısı göz önüne alındığında Immutable.js Liste
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"}
]
ben sıralamak çalışıyorum ve grup bunu: duruma göre gruplanmış
- Sıralı siparişin "canlı", "taslak", "hazır" olduğu şekilde duruma göre
- Her bir durumun içindeki öğeler, en yakın zamanda önce, en yakın tarihte sıralanır.
Ne var bugüne kadar:
// 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)
Henüz tarihe göre sıralayabilirsiniz :)
sorun bir an ben noktaya yok ettik gerçeği için Ignore Yukarıdakiler, sortByStatus'un genel grup olan IndexedIterable komutunu geçiriyor gibi görünüyor, ancak bu anahtarla sıralayamıyorum. Ben düşünüyorum Muhtemelen sortBy kullanmam gerekir, ancak Immutable.js belgeleri anlaşılamaz ve bunun nasıl gerçekleştirileceğine dair hiçbir örnek bulunmuyor.
Öyleyse, soru: groupBy eyleminin sonucunu nasıl alabilirim ve bunu özel bir sıraya nasıl ayırabilirim ve ayrıca her gruptaki tüm öğelerin tarihe göre sıralanmasını nasıl sağlayabilirim?
, bu cevaba bakınız: https://stackoverflow.com/questions/46936825/how-can-i-sort-an-immutablejs-list-object-on-multiple-keys – KerSplosh