使用rxjs保持来自多个流的公共ID?

时间:2016-10-14 21:18:46

标签: firebase rxjs reactive-programming nosql

我有3个流来自firebase返回的人员ID数组:

  • 1条流让我所有居住在德克萨斯州的人
  • 1条流,让我所有人都是男性
  • 1条流让我所有有狗的人

我如何合并他们只会让那些有狗ids的男性?

是否有运营商可以从多个流中提供常见ID? 我看了here,我似乎找不到正确的操作符。

我可以合并它们并使用Distinct但它会删除它们而不是给它们。

1 个答案:

答案 0 :(得分: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 that demonstrate it,我甚至动态更新了德州的ID,以显示它反映在结果中。

你没有提到它,但我认为你想要所有带有来自德克萨斯州的狗的男人。如果没有,只需删除最后一个过滤器。