arrays - 如何将可观察对象和属性(字段)数组映射到属性?
问题描述
我目前正在以这种形式收到来自服务器的响应。
{
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;
}
但只想获取属性(字段)。仅表示字符串和数字。
{
plateNumber: string;
vehicleId: number;
garageName: string;
vehicleType: string;
status: string;
vehicleModelName: string;
ownerName: string;
contactPhone: number;
techInspectDueDate: Date;
additionalInfo: string;
lastDriver: string;
}
目前我正在使用 HTTP 发布响应从服务器获取对象。
getVehicles(): Observable<Vehicle[]> {
const url = `${this.serviceUrl}`;
return this.http.post<Vehicle[]>(url, {} );
}
我需要在检查对象是否具有这些特定字段(车辆类型、状态、车辆模型名称、所有者名称、车库名称)时映射响应。当我不确定对象是否具有这些字段或者它是否已经是我需要的值(例如 plateNumber)时,如何映射响应?
解决方案
使用地图并返回您想要的任何内容。
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
};
})),
);
}