Как мне создать массив Observable, который является результатом усреднения сопоставленных массивов - PullRequest
2 голосов
/ 09 января 2020

Я пытаюсь выяснить среднечасовое значение этой коллекции с именем meterdata, где каждый документ в коллекции имеет массив с именем hourlyarray длиной 24.

Этот фрагмент кода отображает [0] все hourlyarray с и усредняют их вместе в одно число.

Написано отлично работает, но усредняет только первую позицию. Есть ли простой способ программно создать Observable на моем component.ts для запуска этого 24 раза, а затем объединить все результаты в один массив?

this.avg0 = collectionRef.collection('meterdata', 
ref=> ref.where("day", "==", day )).valueChanges()
.pipe((map(data => data.map(d => d.hourlyarray[0])
.reduce((acc, avg) => acc + avg, 0)/data.length)));

Связанный: Разве не разумно быть делать этот расчет на стороне клиента?

1 Ответ

1 голос
/ 09 января 2020

.pipe(switchMap(data => from(data)), map(arrayofdata => arrayofdata.reduce(...))) должно работать, если я правильно понял ваше намерение. Короче говоря, он преобразовал бы ваш hourlyarray в Observable и применил бы сокращение ко всем элементам в этом массиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...