Javascript RxJs-可观察-如何从JSON对象获取数据
我有一个JSON响应,如下所示。我想从两个单独的数组中获取数据,如[abc,xyz]和[aa,bb]。是否可以使用rx observables map和switchmap在同一个observable中获得两个阵列Javascript RxJs-可观察-如何从JSON对象获取数据,javascript,typescript,rxjs,observable,Javascript,Typescript,Rxjs,Observable,我有一个JSON响应,如下所示。我想从两个单独的数组中获取数据,如[abc,xyz]和[aa,bb]。是否可以使用rx observables map和switchmap在同一个observable中获得两个阵列 this.data$ = Observable.of({ "data": [ { "firstname": "abc", "lastname": "aa" }, {
this.data$ = Observable.of({
"data": [
{
"firstname": "abc",
"lastname": "aa"
},
{
"firstname": "xyz",
"lastname": "bb"
}
]
}) .map(res => res.data)
.switchMap(dataArray => {
return Observable.from(dataArray);
})
.map((arrayResp: any) => {
return ( arrayResp.firstname);
}).toArray()
这里我只能得到一个数组。此方法是否只能获得两个数组。您只需使用数组映射功能即可:
.pipe(map(res => res.data),
map(a => {
return {
firstnames: a.map(_ => _.firstname),
lastnames: a.map(_ => _.lastname)
}
}));
您有json字符串,因此需要在
switchMap
方法中这样做
.switchMap(dataArray => {
return Observable.from(JSON.parse( dataArray));
})
或者你也可以这样做
this.data$ = Observable.of(JSON.parse(`{
"data": [
{
"firstname": "abc",
"lastname": "aa"
},
{
"firstname": "xyz",
"lastname": "bb"
}
]
}`).subscribe(res=> console.log(res.data));
您只获取一个对象,是否要获取所有对象的数组?这是你的意思吗?是的,我想分别得到firstname和lastname的数组。这对你有用吗?没有buffercount我们就不能这样做吗?对不起,我甚至不明白为什么我在这个简单的任务中会遇到这么复杂的事情。我编辑了我的答案和stackblitz。谢谢你的快速回复!