合并观察的对象插入的另一个可观察到的
问题描述:
嵌套项说我有以下2个对象:合并观察的对象插入的另一个可观察到的
obj1 = {
dataId: 1,
item: {}
}
obj2 = {
id: 1,
data: { a: 1, b: 2, c: 3 }
}
然后我有2个可观察量持有上述类型的对象的数组:
Observable<obj1[]>
Observable<obj2[]>
有没有一种方法使用rxjs将2个观察值合并到一个新的观察值中,如果Ids彼此相等,那么obj2的数据将映射到对象1中的项目字段?所以要对象的上方,在可观察到的结果与此对象:
newObj = {
id: 1,
item: { a: 1, b: 2, c: 3 }
}
第二可观察到的将总是包含用于第一观测DATAID字段匹配的ID,并且可以有相同的值,但许多数据ID第二个可观察对象中的ID将始终是唯一的。
答
您可以在RxJS中做到这一点,但您需要自己实现匹配部分。使用combineLatest(https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/combinelatest.md)可以组合这两个流。在resultSelector函数中,可以编写逻辑来实际合并两个数组。
//伪代码
Rx.Observable.combineLatest(firstObs$, secondObs$, (first, second) => {
// write the combining logic here and return the result
});