rxjs 5的运行平均值

Cel*_*Cel 4 average reactive-programming observable rxjs rxjs5

我想观察rxjs ^ 5的滚动平均值

半解

const data$ = Rx.Observable.range(1, 9);
const dataToAverage$ = data$.bufferCount(4, 1);
const movingAverage$ = dataToAverage$.map(arr =>
                       arr.reduce((acc, cur) => acc + cur) / arr.length);
Run Code Online (Sandbox Code Playgroud)

mar*_*tin 5

我会这样:

Observable.range(1, 9)
    .scan((acc, curr) => {
        acc.push(curr);

        if (acc.length > 4) {
            acc.shift();
        }
        return acc;
    }, [])
    .map(arr => arr.reduce((acc, current) => acc + current, 0) / arr.length)
    .subscribe(console.log);
Run Code Online (Sandbox Code Playgroud)

scan()刚刚收集最多4项和map()然后计算平均值。

1
1.5
2
2.5
3.5
4.5
5.5
6.5
7.5
Run Code Online (Sandbox Code Playgroud)