如何将可观察对象和属性(字段)的数组映射到属性?

Vat*_*ato 1 arrays mapping observable rxjs

我目前正在以这种形式从服务器收到响应。

{
    plateNumber: string;
    vehicleId: number;
    garage: {
        garageName: string;
    };
    vehicleType: {
        vehicleType: string;
    };
    vehicleStatus: {
        status: string;
    };
    vehicleModel: {
        vehicleModelName: string;
    };
    vehicleOwner: {
        ownerName: string;
    };
    contactPhone: number;
    techInspectDueDate: Date;
    additionalInfo: string;
    lastDriver: string;
}
Run Code Online (Sandbox Code Playgroud)

但只想获取属性(字段)。意思只是字符串和数字。

{
    plateNumber: string;
    vehicleId: number;
    garageName: string;
    vehicleType: string;
    status: string;
    vehicleModelName: string;
    ownerName: string;
    contactPhone: number;
    techInspectDueDate: Date;
    additionalInfo: string;
    lastDriver: string;
}
Run Code Online (Sandbox Code Playgroud)

目前我正在使用 HTTP post 响应从服务器获取对象。

 getVehicles(): Observable<Vehicle[]> {
    const url = `${this.serviceUrl}`;
    return this.http.post<Vehicle[]>(url, {} );
  }
Run Code Online (Sandbox Code Playgroud)

我需要在检查对象是否具有这些特定字段(车辆类型、状态、车辆型号名称、所有者名称、车库名称)时映射响应。当我不确定对象是否具有这些字段或者它是否已经是我需要的值(explateNumber)时,如何映射响应?

Raj*_*mar 5

使用 map 并返回任何你想要的。

 getVehicles(): Observable<Vehicle[]> {
    const url = `${this.serviceUrl}`;
    return this.http.post<Vehicle[]>(url, {}).pipe(
      map(vehicles => vehicles.map(vehicle => {
        return {
          plateNumber: vehicle.plateNumber;
          vehicleId: vehicle.vehicleId;
          garageName: vehicle.garage.garageName;
          //...map all other fields manually
        };
      })),
    );
  }
Run Code Online (Sandbox Code Playgroud)