按Map之前的嵌套数组中的值排序

时间:2018-08-15 16:23:51

标签: angular typescript angular6 rxjs6

使用NG6 Rxjs通过http返回一些数据。然后,我将返回的数据分为两个Observable。效果很好,但我需要首先按照嵌套数组中的值对数据进行排序。我可以在视图中触发事件后对数组进行排序,但是在页面加载时不起作用。

此代码按外部数组中的值排序:

return this.http
  .get(this.apiUrl + 'PatchGroups/ForApp/' + appId)
  .pipe(
    map((data: Array<any>) => {
    return {
      ungrouped: data.filter(d => d.id < 0),
      grouped: data.filter(d => d.id > 0).sort((a, b) => a.name < b.name ? -1 : 1)
    };
    }),
   catchError(this.handleError)
  );

尝试通过嵌套值对它进行排序,但效果不好:

return this.http
  .get(this.apiUrl + 'PatchGroups/ForApp/' + appId)
  .pipe(
    map((data: Array<any>) => {
    return {
      ungrouped: data.sort((a, b) => a.server.name < b.server.name ? -1 : 1).filter(d => d.id < 0),
      grouped: data.filter(d => d.id > 0).sort((a, b) => a.name < b.name ? -1 : 1)
    };
    }),
   catchError(this.handleError)
  );

对每个Observable进行排序似乎很脏。在传递给每个Observable之前我不能对数据进行排序吗?

来自我的组件:

this.appsApiService.getPatchGroups(appReconId)
  .subscribe(pg => {
    this.ungrouped_patchGroups = pg.ungrouped;
    this.grouped_patchGroups = pg.grouped;
  }
);

0 个答案:

没有答案