排序 Observable 数组时获取对象

Get object when sorting an Observable array

当我尝试对 Observable 数组进行排序时,我无法获得对象。

我想按“Localite”排序,得到的结果只是“Localite”,没有完整的对象。

我不明白为什么。

我的 Json 文件如下所示:


{
    A[
       Code_Postal: ...
       Localite: ...
       Sous_commune: ...
       Commune_principale: ...
     ]
    B[
      Code_Postal: ...
      Localite: ...
      Sous_commune: ...
      Commune_principale: ...
     ]
    C[
      ...
     ]
    ...
}

我的界面是这样的:


export interface Communes{
    Code_Postal       : number;
    Localite          : string;
    Sous_commune      : string;
    Commune_principale: string;
}

排序 json 文件的函数如下所示:


getCommunes(prov: string): Observable<Communes[]> {
    return this.jsonService.getData(this.zipCodesFile)
      .pipe(
        map((response: any) =>
          response[prov].map((localite: Communes) => localite.Localite)
            .sort((a: any, b: any) => {
              return a.localeCompare(b, 'en', { sensitivity: 'base' });
            })
        ),
      )
  }

TS文件中函数的调用是这样的:


  loadCommunes(): void{
  this.communes$ =  this.apiService.getCommunes('Anvers');
  }

在 html 文件中,我希望能够像这样使用它:


  <ul>
  <li *ngFor="let commune of (communes$ | async)">{{commune.Code_Postal}} - {{commune.Localite}}</li>
</ul>

如何在 json 文件排序后检索对象?

谢谢

将您的 map 更改为:

    map((response: any) =>
      response[prov]
        .sort((a: Communes, b: Communes) => {
          return a.Localite.localeCompare(b.Localite, 'en', { sensitivity: 'base' });
        })
    ),

您的数组 map 正在将其更改为 Localite 值的数组。