使用 rxjs 进行分组和聚合

group and aggregate with rxjs

扫描是这样的(带求和函数):

1-1-1-1-1-1 -> 1-2-3-4-5-6

但我需要这样的东西:n=3

1-1-1-1-1-1 -> 3-3

如何实现此行为?

这在 c# 中有效:

var query =
    new [] { 1, 1, 1, 1, 1, 1, }
        .ToObservable()
        .Buffer(3)
        .Select(x => x.Sum());

我认为 [rxjs] 的工作方式类似。

在 RxJs 中你可以使用 bufferWithCount:

var source = Rx.Observable.from([1,1,1,1,1,1])
                  .bufferWithCount(3)
                  .flatMap(group => Rx.Observable.from(group).sum());

您可以选择使用 windowWithCount,这样您就不必为了使用 sum 而重新包装输出,但您也会得到一个空的最终 window ,这将触发一个无关的 0 值。