#firebase #rxjs #reactive-programming #nosql
# #firebase #rxjs #реактивное программирование #nosql
Вопрос:
У меня есть 3 потока, поступающих из firebase, возвращающих массивы идентификаторов людей :
- 1 поток, который дает мне всех людей, живущих в Техасе
- 1 поток, который дает мне всех людей, которые являются мужчинами
- 1 поток, который дает мне всех людей, у которых есть собака
Как я могу объединить их и получить только мужчин, у которых есть идентификаторы собак?
Есть ли оператор, который может предоставить мне общие идентификаторы из нескольких потоков?Я посмотрел здесь и, похоже, не нашел правильного оператора для того, что я хочу сделать.
Я мог бы объединить их и использовать Distinct, но он удаляет их вместо их предоставления.
Ответ №1:
Вы можете использовать комбинировать последние и фильтровать массивы:
var menWithDogsFromTexas = Rx.Observable.combineLatest(
menIds, withDogsIds, fromTexasIds,
(men, dogs, texas) => {
return men
.filter(menId => dogs.indexOf(menId) >= 0)
.filter(menId => texas.indexOf(menId) >= 0);
}
);
Вот jsbin, который демонстрирует это, я даже динамически обновил идентификаторы texas, чтобы показать, что это отражается в результате.
Вы не упомянули об этом, но я предположил, что вам нужны все мужчины с собаками из Техаса. Если нет, просто удалите последний фильтр.
Комментарии:
1. Спасибо за ваш ответ!