Biorąc pod uwagę następującą strukturę danych:Sortowanie i Grupa Immutable.js Lista
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"}
]
Próbuję uporządkować i grupa go w tych warunkach:
- pogrupowane według statusu
- Zamówione według statusu takiego, że zamówienie jest "na żywo", "wersja robocza", "gotowe".
- Przedmioty w ramach każdego statusu należy zamawiać według datyCreated, najnowsze jako pierwsze.
Co mam tak daleko:
// 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)
ignorowanie przez chwilę fakt, że ja nie mam do punktu, gdzie można sortować według daty jeszcze :)
Problem z powyższe wydaje się, że sortByStatus jest przekazywany IndexedIterable, który jest ogólną grupą, ale nie jest kluczem, więc nie mogę go posortować według tego klucza. I think Prawdopodobnie potrzebuję użyć sortBy, ale dokumenty Immutable.js są niezrozumiałe i nie mają przykładów, na których można by się dowiedzieć, jak to osiągnąć.
Pytanie, w jaki sposób mogę uzyskać wynik działania groupBy i posortować go na zamówienie niestandardowe oraz dodatkowo, w jaki sposób mogę zagwarantować, że wszystkie pozycje w każdej grupie są posortowane według daty?
uzyskać pomoc sortując datami zobaczyć tę odpowiedź: https://stackoverflow.com/questions/46936825/how-can-i-sort-an-immutablejs-list-object-on-multiple-keys – KerSplosh