像这样的东西?
在这里,你每次都要重新计算总数。如果有更多的值,或者计算总数的计算成本很高,您可以保留一堆值,然后推/弹出以减去旧值并推送新值。对于总共7次的运行,只需对每次排放进行重新计算会更快。
我将可观察到的内容设为空,以便编译这个玩具示例。您需要提供一些数据,而不是
EMPTY
流动
interface measurement {
date : string,
temp : number,
hum : number
}
let measurements$: Observable<measurement> = EMPTY;
measurements$.pipe(
scan((acc, curr) => [...acc.slice(-6), curr], [] as measurement[]),
map(measurements => ({
runningDates: measurements.map(({date}) => date),
totalTemp: measurements.reduce((acc,{temp}) => acc + temp, 0),
totalHum: measurements.reduce((acc,{hum}) => acc + hum, 0),
}))
).subscribe(console.log);