使用rxjs进行分组和聚合

时间:2015-07-30 09:03:27

标签: system.reactive reactive-programming rxjs

扫描的工作原理如下(使用sum函数):

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

但我需要这样的事情:n = 3

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

我如何实现这种行为?

2 个答案:

答案 0 :(得分:2)

在RxJ中,您可以使用bufferWithCount

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

您可以选择使用windowWithCount,这样您就不必重新输出输出以使用sum,但您也会得到一个空的最后一个窗口,这将触发一个无关的0值。

答案 1 :(得分:1)

这适用于c#:

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

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