angular - RXJS groupBy Observable <对象[]>

标签 angular rxjs observable

我有entries$: Observable<BooksOverviewGroup[]>; :

enter image description here

我想按 groupId 对它们进行分组。我试过这样:

groupBy(books => books.map(book => book.groupId)),
 mergeMap(innerObs => innerObs.skip(1).map(books => books.map(book => book.groupTitle)));

然而,它并没有奏效。在这种情况下如何按 groupId 分组? (Observable<Object[]>)

最佳答案

你几乎明白了。

尝试在 groupBy() 之前使用 mergeMap()concatMap()

举个例子:

const people = [
  { name: 'Sue', age: 25 },
  { name: 'Joe', age: 30 },
  { name: 'Frank', age: 25 },
  { name: 'Sarah', age: 35 }
];

of(people) // <- this gets Observable<Object[]>
  .pipe(
    mergeMap(res => res), // <- use concatMap() if you care about the order
    groupBy(person => person.age, p => p.name),
    mergeMap(group => zip(of(group.key), group.pipe(toArray())))
  )
  .subscribe(console.log);

输出:

(2) [25, Array(2)]
(2) [30, Array(1)]
(2) [35, Array(1)]

关于angular - RXJS groupBy Observable <对象[]>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50332149/

相关文章:

根指令上的 Angular 2 输入参数

node.js - 在接受请求之前等待数据库连接

angular - rxjs 中的嵌套 HTTP 控制流

javascript - `reduce/scan` 的累加器函数中的可观察类型是否匹配?

javascript - JS 中的 Observable 模式和 Mediator 模式之间的真正区别是什么?

http - Angular 2 : Show activity indicator for every HTTP request and hide views until completed

javascript - angular2 AoT错误不支持函数调用

javascript - angular - 基于 mat-select 选项的条件元素

android - RxJava + 改造,获取列表并为每个项目添加额外信息

rxjs 定期轮询具有可变响应时间的端点