RxJS groupBy到多维数组

RxJS groupBy到多维数组,rxjs,reactive-programming,Rxjs,Reactive Programming,我一直在尝试多种运算符组合,但无法获得我想要的输出。给出一系列事件: const events = [ { day: 1, title: 'Event 1' }, { day: 1, title: 'Event 2' }, { day: 1, title: 'Event 3' }, { day: 2, title: 'Event 4' }, { day: 2, title: 'Event 5' }, { day: 2, title: 'Event 6' }, { da

我一直在尝试多种运算符组合,但无法获得我想要的输出。给出一系列事件:

const events = [
  { day: 1, title: 'Event 1' },
  { day: 1, title: 'Event 2' },
  { day: 1, title: 'Event 3' },
  { day: 2, title: 'Event 4' },
  { day: 2, title: 'Event 5' },
  { day: 2, title: 'Event 6' },
  { day: 'both', title: 'Sandbox 1' },
  { day: 'both', title: 'Sandbox 2' },
]
我想要这样的输出:

[
  [
    {
      "day": 1,
      "title": "Event 1"
    },
    {
      "day": 1,
      "title": "Event 2"
    },
    {
      "day": 1,
      "title": "Event 3"
    }
  ],
  [
    {
      "day": 2,
      "title": "Event 4"
    },
    {
      "day": 2,
      "title": "Event 5"
    },
    {
      "day": 2,
      "title": "Event 6"
    }
  ],
  [
    {
      "day": "both",
      "title": "Shared 1"
    },
    {
      "day": "both",
      "title": "Shared 2"
    }
  ]
]
我能够得到这个结果的唯一方法是订阅并将结果推送到另一个数组中。理想情况下,rx连锁店会在订阅之前建立它,但我不能完全得到它

以下是我得到的输出上述结果:

from(events).pipe(
    groupBy(obj => obj.day),
    mergeMap(group => group.pipe(toArray())),
  ).subscribe(next => {
    this.all.push(next)
    console.log(this.all)
  })

要将组累加到外部数组中,可以在
mergeMap
之后使用另一个
toArray
操作符:

from(events).pipe(
    groupBy(obj => obj.day),
    mergeMap(group => group.pipe(toArray())),
    toArray(),
).subscribe(results => console.log(results))

生成的可观察对象将只发射一次,并将发射一个包含所有组数组的单个数组。

听起来像是在
mergeMap
.Perfect@cartant之后需要一个
toArray
操作符!我知道这一定很简单。作为答案发布,我将接受。