这是一个简短且有些不寻常的主题,但我在工作时在网上并没有遇到太多,所以这是我的贡献。我很想听听人们对这种方法的意见,因为我经常使用它。我不喜欢在 switch 语句中编写多个 case,因此我发现使用对象是一个更干净的替代方案。它可能不会更快,但代码对我来说看起来更干净。
我想处理不同付款状态的订单,并根据是否已付款应用不同的处理方式。
让我们从这个开始:
const orders = [{ "id": 1, "product": "shoes", "paymentStatus": "Paid" },{ "id": 2, "product": "pants", "paymentStatus": "Pending" },{ "id": 3, "product": "tie", "paymentStatus": "UnPaid" }]; const handlePaymentStatus =(order) =>{ return order.paymentStatus } for (const order of orders) { handlePaymentStatus(order) }
我们希望根据 order. paymentStatus 应用特定的处理。一个简单的解决方案是使用如下 switch 语句:
let orders = [{ "id": 1, "product": "shoes", "paymentStatus": "Paid" },{ "id": 2, "product": "pants", "paymentStatus": "Pending" },{ "id": 3, "product": "tie", "paymentStatus": "Unpaid" }]; const handlePaymentStatus =(order) =>{ switch (order.paymentStatus) { case 'Paid': console.log("it's all good"); break; case 'Unpaid': console.log("need to be paid"); break; default: console.log(`We'll wait`); } } for (const order of orders) { handlePaymentStatus(order) }
这是一个简单的情况,因为我们有两个选项和一个默认选项,但想象一下它有多种付款方式。为了清楚起见,我们将保持这样:
let orders = [{ "id": 1, "product": "shoes", "paymentStatus": "Paid" },{ "id": 3, "product": "tie", "paymentStatus": "Unpaid" },{ "id": 2, "product": "pants", "paymentStatus": "Pending" },]; const paymentStatusHandlers = { 'Paid': () => console.log("it's all good"), 'Unpaid': () => console.log("needs to be paid"), } for (const order of orders) { paymentStatusHandlers[order.paymentStatus] ? paymentStatusHandlers[order.paymentStatus]() : console.log("We'll wait") }
使用对象而不是 switch 语句可以使代码更具可读性和可维护性,尤其是在处理多种情况时。这是个人喜好的问题,但作为替代方法值得考虑。
如果您想要进行任何其他具体更改或添加,请随时告诉我!
以上是增强 JavaScript 代码:使用对象代替 Switch 语句的详细内容。更多信息请关注PHP中文网其他相关文章!