我观察到一系列任务。我想用另一个可观察到的(文本输入)过滤这些任务。
然后,我想按“实体”属性对过滤后的任务进行分组,然后将其映射为以下结果:
{ 'entity': 'a',
'tasks': [...] },
{ 'entity': 'b',
'tasks': [...] }
这是我得到的最接近的测试:
https://stackblitz.com/edit/rxjs-filter-group
但是我似乎无法正确地对它们进行分组。
答案 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()))
)
)
)