说我有以下两个对象:
obj1 = {
dataId: 1,
item: {}
}
obj2 = {
id: 1,
data: { a: 1, b: 2, c: 3 }
}
然后我有2个可观察对象,它们包含上述类型的对象数组:
Observable<obj1[]>
Observable<obj2[]>
有没有办法使用rxjs将2个observable合并到一个新的observable中,如果Ids彼此相等,那么obj2的数据会映射到对象1中的item字段?因此,上面的对象会产生一个可观察到的对象:
newObj = {
id: 1,
item: { a: 1, b: 2, c: 3 }
}
第二个observable将始终包含第一个observables dataId字段的匹配id,并且可能有许多dataIds具有相同的值,但第二个observable中的id将始终是唯一的。
答案 0 :(得分:1)
您可以在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
});