Angular6 HttpClient获取对象的转换响应数组

Angular6 HttpClient获取对象的转换响应数组,angular6,angular-httpclient,rxjs6,Angular6,Angular Httpclient,Rxjs6,下面是我的模型 export interface AuditTrail { logAction:string, targetEmpId:string, createdDate:Date } 下面的代码从GET调用中检索数据并对其进行转换 public getAuditTrails() { return this.http.get<AuditTrail[]>(this.auditTrailUrl) .pipe( map((data

下面是我的模型

export interface AuditTrail {
    logAction:string,
    targetEmpId:string,
    createdDate:Date
}
下面的代码从GET调用中检索数据并对其进行转换

  public getAuditTrails() {
   return this.http.get<AuditTrail[]>(this.auditTrailUrl)
    .pipe(
      map((data :Object[]) =>  {
        return data.map(value => {
          const auditTrail:AuditTrail = {
            logAction:value["logAction"],
            targetEmpId:value["targetEmpId"]["empCode"],
            createdDate:value["loggedDateTime"]
          }
          return auditTrail;
        });
    })
    )
  }
public getAuditTrails(){
返回this.http.get(this.auditTrailUrl)
.烟斗(
地图((数据:Object[])=>{
返回data.map(值=>{
const auditTrail:auditTrail={
logAction:值[“logAction”],
targetEmpId:值[“targetEmpId”][“empCode”],
createdDate:value[“loggedDateTime”]
}
返回审核跟踪;
});
})
)
}
这段代码工作正常。但是,我的问题是如何避免数组 迭代
data.map(值=>{
并使用
rxjs
运算符进行相同的操作


该问题旨在提高我对
rxjs
运算符的理解,因此解决方案应使用rxjs运算符。

这取决于您希望最终返回的值,即
AuditTrail
对象流或单个
AuditTrail[]
数组

流:

public getAuditTrails(): Observable<AuditTrail> {
 return this.http.get<SomeObject[]>(this.auditTrailUrl).pipe(
   flatMap(data => data),
   map<SomeObject, AuditTrail>(value => ({
     logAction:value["logAction"],
     targetEmpId:value["targetEmpId"]["empCode"],
     createdDate:value["loggedDateTime"]
   })
 );
}
就我个人而言,我不认为平面映射有任何好处,使用
map(data=data.map(…)
也可以

public getAuditTrails(): Observable<AuditTrail> {
 return this.http.get<AuditTrail[]>(this.auditTrailUrl).pipe(
   flatMap(data => data),
   map<SomeObject, AuditTrail>(value => ({
     logAction:value["logAction"],
     targetEmpId:value["targetEmpId"]["empCode"],
     createdDate:value["loggedDateTime"]
   }),
   toArray()
 );
}