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

我想观察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).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