Rxjs Forkjoin,如何返回特定属性的单个数组?

Tro*_*oyd 0 javascript rxjs angular

我有一个 fork join,可以从 10 个 http 源获取数据,并且运行良好。每个源的结构都是相同的。但是,我正在寻找的结果位于响应的“数据”属性中。我需要将所有结果放入单个对象数组中。

回复

{
 data:[stuff],
 included: [stuff],
 version: 1.0
}
Run Code Online (Sandbox Code Playgroud)

代码

 forkJoin(requestArray).subscribe(results => {
   console.log(results);
 });
Run Code Online (Sandbox Code Playgroud)

如何返回此 forkjoin 的结果,将每个响应的 data 属性中的所有数组合并到单个数组中?

所需输出

[{all-Data-Objects-In-An-Array}, ...]
Run Code Online (Sandbox Code Playgroud)

aak*_*arg 5

import { Component } from "@angular/core";
import { Observable } from "rxjs/Observable";
import "rxjs/add/observable/timer";
import "rxjs/add/operator/do";
import "rxjs/add/operator/take";
import "rxjs/add/operator/share";
import "rxjs/add/operator/shareReplay";
import { forkJoin } from "rxjs/observable/forkJoin";
import { of } from "rxjs/observable/of";
import { tap, map } from "rxjs/operators";

@Component({
  selector: "my-app",
  templateUrl: "./app.component.html",
  styleUrls: ["./app.component.css"]
})
export class AppComponent {
  name = "Angular 5";
  data1 = {
    data: ["abc"],
    version: 1.0
  };
  data2 = {
    data: ["abc"],
    version: 1.0
  };
  private init$: Observable<any>;

  public ngOnInit() {
    forkJoin(of(this.data1), of(this.data2))
      .pipe(
        map(results => results.reduce((all, itm) => all.concat(itm.data), []))
      )
      .subscribe(results => {
        console.log(results);
      });
  }
}
Run Code Online (Sandbox Code Playgroud)