我希望获得一个发出数字的流,每个数字与前一个数字或之前的所有数字都不同。
输出下面的流可能是[0,1,1,1,2,1,0,...],我希望得到一些修改来获得[0,2,1,2,0,1,... 。],序列中没有两个或多个相邻的数字相同:
const number$ = Rx.Observable.interval(500)
.map(() => Math.floor(Math.random() * 5))
.take(5)
number$.subscribe(console.log)
输出下面的流可能是[3,3,1,4,3],我期望得到[2,0,3,1,4]的一些修改,所有数字都是不同的:
distinct
简单地使用distinctUntilChanged
和distinct
会产生一些'漏洞',这是不可取的。预生成确定的序列(例如:使用lodash.shuffle)也不是理想的解决方案,输出数可能是由远程rand生成器服务生成的,意味着我们在获取重复数字的同时进行云重试数提取。
我认为如果有一些方法可以获得distinctUntilChanged
和requestAnimationFrame()
的比较结果并使用它来有条件地回滚/重放最后一个(一个或一些)操作可以解决我的问题