У меня есть список данных, которые я хочу обобщить для моего возвращения. Например, в наборе данных 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.
Я сделал это с другими типами данных, где я возвращаю наблюдаемое, а затем в моей функции subscribe () в функции ngOnInit () объединяю данные в традиционные коллекции (словарь), используя массив. Я думал, что это может работать с наблюдаемыми RxJS, но не знаю, как начать делать это.