我有一个可观察的一系列任务。我想通过另一个可观察的(文本输入)过滤这些任务。
然后我想通过“实体”属性对过滤后的任务进行分组并映射,因此结果是:
{ 'entity': 'a',
'tasks': [...] },
{ 'entity': 'b',
'tasks': [...] }
这是我得到的最接近的测试:
https://stackblitz.com/edit/rxjs-filter-group
但我似乎无法正确地将它们分组..
我有一个可观察的一系列任务。我想通过另一个可观察的(文本输入)过滤这些任务。
然后我想通过“实体”属性对过滤后的任务进行分组并映射,因此结果是:
{ 'entity': 'a',
'tasks': [...] },
{ 'entity': 'b',
'tasks': [...] }
这是我得到的最接近的测试:
https://stackblitz.com/edit/rxjs-filter-group
但我似乎无法正确地将它们分组..
我已经更新了您的部分代码,请参阅:
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()))
)
)
)