Javascript RxJs-可观察-如何从JSON对象获取数据

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" }, {

我有一个JSON响应,如下所示。我想从两个单独的数组中获取数据,如[abc,xyz]和[aa,bb]。是否可以使用rx observables map和switchmap在同一个observable中获得两个阵列

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。谢谢你的快速回复!