GroupBy RxJs for Observable<Object[]>



我有以下类型为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
}]

数组应设置为按开始日期(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);

请参阅以下堆栈闪电战 -

https://stackblitz.com/edit/rxjs-groupby-key-vals-hsj3a7?file=index.ts&devtoolsheight=100

您需要根据需要调整日期格式。

相关内容

最新更新