RXJS-按另一个可观察到的组进行过滤

时间:2018-07-12 08:07:45

标签: filter rxjs combinelatest

我观察到一系列任务。我想用另一个可观察到的(文本输入)过滤这些任务。

然后,我想按“实体”属性对过滤后的任务进行分组,然后将其映射为以下结果:

{ 'entity': 'a',
  'tasks': [...] },
{ 'entity': 'b',
  'tasks': [...] }

这是我得到的最接近的测试:

https://stackblitz.com/edit/rxjs-filter-group

但是我似乎无法正确地对它们进行分组。

1 个答案:

答案 0 :(得分:0)

我已经更新了部分代码,请参阅:

const tasks = combineLatest(source,this.searchQuery$).pipe(
        map(([tasks,query]) => {
          return tasks.filter(task => {
            return task.name.toLowerCase().indexOf(query.toLowerCase()) > -1;
          })
        }),
      mergeMap(v => from(v)
        .pipe(
            groupBy(task => task.entity),
            mergeMap(group => group.pipe(toArray()))
        )
      )
    )