扫描的工作原理如下(使用sum函数):
1-1-1-1-1-1 -> 1-2-3-4-5-6
但我需要这样的事情:n = 3
1-1-1-1-1-1 -> 3-3
我如何实现这种行为?
答案 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]的工作方式类似。