[英]GroupBy RxJs for Observable<Object[]>
我有類型Observable<Event[]>:
的以下條目Observable<Event[]>:
[{
"_id": 1,
"_title": "Testveranstaltung 1",
"_startDate": "2019-05-29T07:20:00.000Z",
"_endDate": "2019-05-29T08:00:00.000Z",
"_isAllDay": false
}, {
"_id": 2,
"_title": "Testveranstaltung 2",
"_startDate": "2019-06-10T07:00:00.000Z",
"_endDate": "2019-08-02T07:00:00.000Z",
"_isAllDay": false
}, {
"_id": 3,
"_title": "Testveranstaltung 3",
"_startDate": "2019-06-12T07:00:00.000Z",
"_endDate": "2019-06-12T10:00:00.000Z",
"_isAllDay": false
}]
該數組應該是一個二維數組,按startDate(moment.js-Object)的月份分組。 我想看這樣的數組:
[{
"May 2019": [
[
"_id": 1,
"_title": "Testveranstaltung 1",
"_startDate": "2019-05-29T07:20:00.000Z",
"_endDate": "2019-05-29T08:00:00.000Z",
"_isAllDay": false
]
]
},
{
"June 2019": [
[
"_id": 2,
"_title": "Testveranstaltung 2",
"_startDate": "2019-06-10T07:00:00.000Z",
"_endDate": "2019-08-02T07:00:00.000Z",
"_isAllDay": false
],
[
"_id": 3,
"_title": "Testveranstaltung 3",
"_startDate": "2019-06-12T07:00:00.000Z",
"_endDate": "2019-06-12T10:00:00.000Z",
"_isAllDay": false
]
]
}
]
使用此代碼我還沒有得到正確的結果:
//Observable<Event[]> is returned by a function
.pipe(groupBy((events: Event[]) => events.map((event: Event) => event.startDate.format('MMMM YYYY')), (events: Event[]) => events.map((event: Event) => event.startDate.format('DD/MM/YYYY'))),
mergeMap(group => zip(of(group.key), group.pipe(toArray())))
.subscribe((data) => {
console.log(data);
});
以下是使用上面的代碼輸出的內容:
[
[May 2019, June 2019, June 2019],
[
[29/05/2019, 10/06/2019, 12/06/2019]
]
]
提前致謝!
您可以執行以下操作 -
const data = [{
"_id": 1,
"_title": "Testveranstaltung 1",
"_startDate": "2019-05-29T07:20:00.000Z",
"_endDate": "2019-05-29T08:00:00.000Z",
"_isAllDay": false
}, {
"_id": 2,
"_title": "Testveranstaltung 2",
"_startDate": "2019-06-10T07:00:00.000Z",
"_endDate": "2019-08-02T07:00:00.000Z",
"_isAllDay": false
}, {
"_id": 3,
"_title": "Testveranstaltung 3",
"_startDate": "2019-06-12T07:00:00.000Z",
"_endDate": "2019-06-12T10:00:00.000Z",
"_isAllDay": false
}];
from(data).pipe(
groupBy(d => d['_startDate'], p => p),
mergeMap(group => zip(of(group.key), group.pipe(toArray())))
).subscribe(console.log);
請參閱以下stackblitz -
https://stackblitz.com/edit/rxjs-groupby-key-vals-hsj3a7?file=index.ts&devtoolsheight=100
您需要根據需要調整日期格式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.