我有一个要汇总的数据列表,以供返回。例如,在Firebase数据集中,我有一个销售结果列表。我也希望能够在回报中计算平均值。
Data:
1:
Date: 20190501,
Person: "John Doe",
Sales: 2000
2:
Date: 20190501,
Person: "Bill Smith",
Sales: 1250
3:
Date: 20190501,
Person: "John Doe",
Sales: 1500
4:
Date: 20190503,
Person: "Bill Smith",
Sales: 2000
5:
Date: 20190503,
Person: "John Doe",
Sales: 1000
6:
Date: 20190503,
Person: "Bill Smith",
Sales: 1300
当我获得此数据时,我想按日期,按人员汇总:
20190501:
John Doe:
Sales: 3500,
Average: 1750
Bill Smith:
SaleS: 1250,
Average: 1250
20190503:
John Doe:
Sales: 1000,
Average: 1000
Bill Smith:
Sales: 3300,
Average: 1650
通过AngularFire2获取条目列表非常简单:
this.AfDb.list<ISales>('Data', ref => ref.orderByChild('Date') ).valueChanges();
我的问题确实在地图,flatMap等上,涉及如何处理返回的数据列表以仍然按子字段排序,以及如何将这些值加到新的主键中,并计算出平均值,包括检查0。
我已经用其他数据类型做到了这一点,我返回了observable,然后在ngOnInit()函数的subscription()中,使用数组将数据组合成传统的集合(字典)。我认为这可能与RxJS可观察对象一起使用,但不知道如何开始。