我试图通过使用map函数重写我使用forEach方法编写的代码。但我不知道如何用我使用映射编写的代码来检查order.FunctionStatusList的空值。更具体地说,如何将代码包含在带有orderAction.OrderList的the语句中。
下面是带有foreach的代码:
this.orders.forEach((order: Order) => {
let orderAction: OrderAction = new OrderAction();
orderAction.FunctionTypeCode = this.functionTypeCode;
orderAction.SelectedAction = this.actionSelected;
if (order.FunctionStatusList != null) {
order.FunctionStatusList.forEach(orderFunctionStatus: OrderFunctionStatus => {
orderAction.OrderList = [{
OrderId: order.OrderId,
AvailableActions: orderFunctionStatus.AvailableActions,
IsAvailableActions: orderFunctionStatus.AvailableActions.length > 0,
ValidationMessage: OrderFunctionStatus.ValidationMessage
}];
});
}
else {
orderAction.OrderList = [{
OrderId: order.OrderId,
AvailableActions: [],
IsAvailableAction: false,
ValidationMessage: ''
}];
}
this.orderActionList.push(orderAction);
});
下面是带有地图的代码:
this.orderActionList = this.orders.map(order => ({
FunctionTypeCode: this.functionTypeCode,
SelectedAction: this.actionSelected,
OrderList: order.FunctionStatusList? order.FunctionStatusList.map((orderFunctionStatus: OrderFunctionStatus) => ({
OrderId: order.OrderId,
AvailableActions: orderFunctionStatus.AvailableActions,
IsAvailableAction: orderFunctionStatus.AvailableActions.length > 0,
ValidationMessage: orderFunctionStatus.ValidationMessage
})):[]
})
编辑这里是订单的json格式:
{
"OrderId": "1",
"FunctionStatusList": [{
"FunctionTypeCode": "1",
"AvailableActions": [{
"ActionLabel": "1",
"ActionValue": "1"
}]
}]
}
以下是order-action json应该看到的样子:
{
"FunctionTypeCode": "1",
"SelectedAction: "1",
"OrderList": [{
"OrderId": "1",
"IsAvailableActionsLoaded": "1",
"AvailableActions": [{
"ActionLabel": "1",
"ActionValue": "1"
}]
}]
}
发布于 2021-02-20 22:58:21
好的,您正经历正确的方向,您只需在您开发的代码中引入else
子句,即冒号之后传递的属性。
您以一种优雅的方式解决了这个问题,ternary operator
允许创建一个内联if... else
语句,在这里可以引入所需的条件。
我尝试并开发了简单的JS代码,所以请原谅我删除了.this
和类型断言。
我在您提供的代码示例中添加了一个ValidationMessage
属性。不管是哪种方式,再一次,使用三元操作符,您可以检查它是否真实。如果不是,可以添加''
注意:我假设您从其他地方获得functionTypeCode
和actionSelected
,这就是为什么我将它们作为常量添加到函数中。
const orderActionFormatter = (input) => {
const functionTypeCode = 1;
const actionSelected = 1;
return input.map(order => {
return ({
FunctionTypeCode: functionTypeCode,
SelectedAction: actionSelected,
OrderList: order.FunctionStatusList != null ? order.FunctionStatusList.map(orderFunctionStatus => {
return ({
OrderId: order.OrderId,
AvailableActions: orderFunctionStatus.AvailableActions,
IsAvailableAction: orderFunctionStatus.AvailableActions.length > 0,
ValidationMessage: !!orderFunctionStatus.ValidationMessage ? orderFunctionStatus.ValidationMessage : ''
})
}) : {
OrderId: order.OrderId,
AvailableActions: [],
IsAvailableAction: false,
ValidationMessage: ''
}
})
})
}
const input = [{"OrderId":"1","FunctionStatusList":[{"FunctionTypeCode":"1","AvailableActions":[{"ActionLabel":"1","ActionValue":"1"}],"ValidationMessage":"foo bar"}]}];
const inputNullFunctionStatusList = [{"OrderId":"1","FunctionStatusList":null}]
console.log(orderActionFormatter(input))
console.log(orderActionFormatter(inputNullFunctionStatusList))
https://stackoverflow.com/questions/66296806
复制相似问题