如何将一个 Observable 映射到另一种类型的 Observable?
How to map an Observable to another type of Observable?
我有这个
public getRouteData(): BehaviorSubject<string[]> {
return this.routeData;
}
我想将其映射到 {name: r}
的 Observable,其中 r
是 string[]
中的一个项目
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(...)
正在迭代从您的可观察对象发出的每个值。所以,r
是 string[]
.
类型
内部 map(...)
遍历 r
数组中的每个元素并将 string
转换为 { name: string }
类型。
我有这个
public getRouteData(): BehaviorSubject<string[]> {
return this.routeData;
}
我想将其映射到 {name: r}
的 Observable,其中 r
是 string[]
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(...)
正在迭代从您的可观察对象发出的每个值。所以,r
是 string[]
.
内部 map(...)
遍历 r
数组中的每个元素并将 string
转换为 { name: string }
类型。