如何将一个 Observable 映射到另一种类型的 Observable?

How to map an Observable to another type of Observable?

我有这个

  public getRouteData(): BehaviorSubject<string[]> {
     return this.routeData;
  }

我想将其映射到 {name: r} 的 Observable,其中 rstring[]

中的一个项目
public gridData: BehaviorSubject<any[]> = new BehaviorSubject([]);

我想获取 string[] 并映射到对象数组 {name: r},其中 r 是数组项,以便我可以将对象数组绑定到网格。

不知何故无法排序或语法正确。

试过 getRouteData().map(r => ({name: r})).subscribe(r => this.gridData.next(r)); 但这不正确,因为我最终得到的是 {name:string[]} 而不是 [{name:string}]

有人可以帮忙吗?

谢谢!

如果我没理解错的话,我想你正在找这个:

getRouteData() // => Observable<string[]>
    .map(r => r.map(v => ({name: v}))) // => Observable<{ name: string }[]>
    .subscribe(r => this.gridData.next(r));

外部 map(...) 正在迭代从您的可观察对象发出的每个值。所以,rstring[].

类型

内部 map(...) 遍历 r 数组中的每个元素并将 string 转换为 { name: string } 类型。