帮助重写代码,使其看起来更合乎逻辑和易于理解,或者告诉我可以使用什么方法。代码的逻辑是这样的:
如果有一个对象,orderStatus: 'ACCEPTED'那么它activeOrder应该接受这个对象,如果有orderStatus: 'ACCEPTED' && orderStatus: 'WAITING',那么这个对象会更优先orderStatus: 'ACCEPTED',如果没有,orderStatus: 'ACCEPTED'但是有,orderStatus: 'WAITING'带走这个对象orderStatus: 'WAITING'。如果这些都不在对象数组中,则离开activeOrder = false。
let order = [{
orderStatus: 'ACCEPTED'
},
{
orderStatus: 'WAITING'
},
{
orderStatus: 'INCOMPLETE'
},
];
let activeOrder = false,
accepted = false,
waiting = false;
order.forEach((value) => {
if (value.orderStatus === 'ACCEPTED') {
accepted = value;
}
if (value.orderStatus === 'WAITING') {
waiting = value;
}
})
if (accepted !== false && waiting !== false || waiting === false) {
activeOrder = accepted;
}
if (accepted === false && waiting !== false) {
activeOrder = waiting;
}
if (accepted === false && waiting === false) {
activeOrder = false;
}
console.log(activeOrder)
或者
或(一旦找到第一个就停止
'ACCEPTED')另一种解决方案可能是按顺序对 order 集合进行排序,其中具有状态的对象首先出现
'Accepted',然后,'Waiting'依此类推。然后只取第一个带有状态的元素,
'Accepted'或者'Waiting',例如,使用find.实现示例:
最简单的方法是通常的方法
for,它可以让您一次性解决问题:Accepted- 然后保存并结束循环Waiting- 然后保存并继续