rxjs 5的运行平均值
我想观察rxjs^5的滚动平均值 半溶液rxjs 5的运行平均值,rxjs,average,observable,reactive-programming,rxjs5,Rxjs,Average,Observable,Reactive Programming,Rxjs5,我想观察rxjs^5的滚动平均值 半溶液 上面的代码工作正常,但它平均的第一个数据数组是1,2,3,4 我怎样才能平均1和1,2以及1,2,3 玩一玩 我为自己不是JS编码员而道歉,下面是C#的答案。如果有人帮我翻译,我将不胜感激 var data = Observable.Range(1, 9); var dataToAverage = data .Scan(new int[] { }, (a, x) => a.Take(3).StartWith(x).ToAr
- 上面的代码工作正常,但它平均的第一个数据数组是
1,2,3,4
- 我怎样才能平均
和1
以及1,2
1,2,3
- 玩一玩
- 我为自己不是JS编码员而道歉,下面是C#的答案。如果有人帮我翻译,我将不胜感激
var data = Observable.Range(1, 9);
var dataToAverage =
data
.Scan(new int[] { }, (a, x) => a.Take(3).StartWith(x).ToArray())
.Select(x => x.Average());
这就产生了:
1
1.5
2
2.5
3.5
4.5
5.5
6.5
7.5
1.
1.5
2.
2.5
3.5
4.5
5.5
6.5
7.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);
scan()
最多只收集4项,而map()
则计算平均值
1
1.5
2
2.5
3.5
4.5
5.5
6.5
7.5
我在这里仔细检查了输出。明亮的我已经对您的解决方案进行了一些更新,以使其适用于前3个数字
1
1.5
2
2.5
3.5
4.5
5.5
6.5
7.5