【问题标题】:RxJs Is it possible to solve this kind of pivot table problemRxJs 有没有可能解决这种数据透视表问题
【发布时间】:2019-10-22 07:33:15
【问题描述】:

我是 RxJs 的新手。有没有可能解决这种类型的数据透视表问题。

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

  • 每个项目都是 0 到 999 之间的数字。

  • 我想从这个流中创建一个表。一个有 10 列的表。

  • 项目的列号等于项目除以 10。因此数字 654 将转到第 6 列。

因为我们有随机数量的项目,并且因为数字以随机顺序到达,所以列将具有不同的高度。

如何对流进行操作,将表格的行一一生成展示表格?

更新

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

列有不同的高度。

【问题讨论】:

    标签: google-cloud-firestore rxjs rxfire


    【解决方案1】:

    更像是一个数组问题

    items.reduce((acc,curr)=>{
    const key=Math.floor(curr/10);
    if(!acc[key])
      acc[key]=[]
    acc[key].push(curr)
    return acc
    },[])
    

    然后你应该得到一个数组(列)的数组(行)

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

    items.pipe(reduce((acc,curr)=>{
    const key=Math.floor(curr/10);
    if(!acc[key])
      acc[key]=[]
    acc[key].push(curr)
    return acc
    },[]))
    

    【讨论】:

    • 谢谢。非常好。是否可以观察结果(acc)并处理对原始流的更改。我的意思是处理稍后到达的物品或..?
    • 将reduce改为scan(),每件物品到达时都会发出
    • 好的。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 2011-04-11
    • 2019-07-04
    • 2010-12-12
    相关资源
    最近更新 更多