【问题标题】:Merge observable object into a nested item of another observable将可观察对象合并到另一个可观察对象的嵌套项中
【发布时间】:2016-10-10 21:33:14
【问题描述】:

假设我有以下 2 个对象:

obj1 = {
  dataId: 1,
  item: {}
} 

obj2 = {
  id: 1,
  data: { a: 1, b: 2, c: 3 }
}

然后我有 2 个可观察对象,它们包含上述类型的对象数组:

Observable<obj1[]>
Observable<obj2[]>

有没有办法使用 rxjs 将 2 个 observable 合并为一个新的 observable,如果 Id 彼此相等,那么 obj2 的数据将映射到对象 1 中的 item 字段?因此,上面的对象会产生一个带有该对象的可观察对象:

newObj = {
  id: 1,
  item: { a: 1, b: 2, c: 3 }
}

第二个 observable 将始终包含与第一个 observable 的 dataId 字段匹配的 id,并且可能有许多相同值的 dataId,但第二个 observable 中的 id 将始终是唯一的。

【问题讨论】:

    标签: angular rxjs observable


    【解决方案1】:

    您可以在 RxJS 中执行此操作,但您需要自己实现匹配部分。使用 combineLatest (https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/combinelatest.md) 您可以合并两个流。在 resultSelector 函数中,您可以编写实际合并两个数组的逻辑。

    //伪代码

     combineLatest([firstObs$, secondObs$], ([first, second]) => {
      // write the combining logic here and return the result
     });
    

    【讨论】:

    • 什么是 Rx.Observable?
    • 这是旧语法。更新到最新版本。
    猜你喜欢
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    相关资源
    最近更新 更多