Google cloud firestore RxJs是否有可能解决这种透视表问题

Google cloud firestore RxJs是否有可能解决这种透视表问题,google-cloud-firestore,rxjs,rxfire,Google Cloud Firestore,Rxjs,Rxfire,我是RxJs的新手。是否有可能解决此类透视表问题 假设我有一个包含任意数量项的流 每个项目都是一个介于0和999之间的数字 我想用这条小溪做一张桌子。有10列的表 项目的列号等于项目除以10。所以数字654将转到第6列 因为我们有一个随机数目的项目,因为数字是以随机顺序到达的,所以列的高度会不同 如何在流上操作以逐个生成表的行以显示表 更新 使用Fan Cheung解决方案(如下所述),使用RxJs很容易生成列。但是,是否也可以随后使用RxJs生成行(行数组),以便能够呈现如下所示的表 柱

我是RxJs的新手。是否有可能解决此类透视表问题

假设我有一个包含任意数量项的流

  • 每个项目都是一个介于0和999之间的数字

  • 我想用这条小溪做一张桌子。有10列的表

  • 项目的列号等于项目除以10。所以数字654将转到第6列
因为我们有一个随机数目的项目,因为数字是以随机顺序到达的,所以列的高度会不同

如何在流上操作以逐个生成表的行以显示表

更新

使用Fan Cheung解决方案(如下所述),使用RxJs很容易生成列。但是,是否也可以随后使用RxJs生成行(行数组),以便能够呈现如下所示的表


柱有不同的高度。

更像是一个数组问题

items.reduce((acc,curr)=>{
const key=Math.floor(curr/10);
if(!acc[key])
  acc[key]=[]
acc[key].push(curr)
return acc
},[])
然后,您应该得到一个数组(列)或数组(行)

如果您有来自流的项,只需更改为pipe()


Thnx。很不错的。是否可以观察结果(acc)并处理对原始流的更改。我的意思是处理迟到的项目或..?更改为
scan()
,每个项目到达时都会发出OK。再来一次。
items.pipe(reduce((acc,curr)=>{
const key=Math.floor(curr/10);
if(!acc[key])
  acc[key]=[]
acc[key].push(curr)
return acc
},[]))