将 {number, Observable<string>} 转换为 Observable<number, string>

Convert {number, Observable<string>} to Observable<number, string>

我想转换类型为

的对象数组
{
  id: number,
  data: Observable<string>
}

类型的对象数组
Observable<{id: number, data: string}>

尽可能只使用 RxJS 运算符。

如果我没看错的话,应该是这样的:

const subject = new Subject<string>();

// Dummy array
const array = [
  {
    id: 1,
    data: of("smthing")
  }, {
    id: 2,
    data: of("smthingelse")
  }, {
    id: 3,
    data: subject.asObservable()
  }
]
// Function that maps {id: number, data: Observable<string>} into Observable<{id: number, data: string}>
const mapTo = (array) => array.map(item => item.data.pipe(map(data => ({...item, data}))));

const mappedArray = mapTo(array);