这是用另一个 BehaviorSubject 过滤 BehaviorSubject<object[]> 的正确方法吗?

Is this the right way to filter a BehaviorSubject<object[]> with a another BehaviorSubject?

我在网上想了几个小时如何用另一个 BehaviorSubject 过滤一个 BehaviorSubject 并听说了 switchMap 所以我实现了它。它有效,但我想知道是否有更合适的方法。 TIA.

// results$:arrayOfObject and activeEntityFilter$:number are both BehaviorSubjects
results$ = this.flowService.searchAppResult$;

filteredResult$ = this.activeEntityFilter$.pipe(
  switchMap((activeEntityFilter) =>
    this.results$.pipe(
      map((flows) => {
        return flows.filter((flow: any) => {
          return activeEntityFilter
            ? flow.initiator_id == activeEntityFilter
            : true;
        });
      })
    )
  )
);

您可以使用combineLatest

当其中一个可观察对象发出新值时,流程将被触发。

results$ = this.flowService.searchAppResult$;

filteredResult$ = combineLatest(this.activeEntityFilter$, results$).pipe(
                        map(([activeEntityFilter, results]) => {
                            return results.filter((result: any) => {
                                return activeEntityFilter
                                    ? result.initiator_id == activeEntityFilter
                                    : true;
                            });
                        })
                    );