如何在JavaScript循环中重复同一用户的点餐迭代
解决同一用户重复点餐的问题
要让每位顾客能重复点餐,你需要在外层的顾客循环内部,添加一个内层循环来处理单个顾客的多次点餐请求。推荐使用do-while循环,因为它能保证顾客至少点一次餐,之后根据确认结果决定是否继续。
以下是修改后的代码,同时加入了订单存储功能,方便后续统计每位顾客的总订单:
// 存储所有顾客的订单记录 const allOrders = []; let numOfPeople = Number(prompt("请问有多少人点餐?", 4)); // 遍历每位顾客 for (let i = 1; i <= numOfPeople; i++) { const customerOrders = []; let anotherMeal; // 内层循环:处理当前顾客的多次点餐 do { let mealOption = prompt( "您好,顾客 #" + i + "\n" + "请选择餐品选项(A,B,C,D)\n" + "A - 汉堡配薯条:$9.95\n" + "B - 汤品沙拉:$13.50\n" + "C - 火鸡肉卷配蔬菜:$7.95\n" + "D - 热狗配洋葱圈:$11.50" ); // 验证输入的餐品选项是否有效 if (mealOption && ['A', 'B', 'C', 'D'].includes(mealOption.toUpperCase())) { customerOrders.push(mealOption.toUpperCase()); } else { alert("请输入有效的选项:A/B/C/D"); continue; // 跳过本次循环,重新询问 } anotherMeal = confirm("顾客 #" + i + ",是否还要再点一份餐?"); } while (anotherMeal); // 用户确认继续时,重复执行点餐流程 // 将当前顾客的订单存入总列表 allOrders.push({ customerId: i, orders: customerOrders }); } // 可选:在控制台查看所有订单记录 console.log("所有点餐记录:", allOrders);
关键修改点:
- 内层do-while循环:确保顾客完成一次点餐后,可选择继续点餐,直到取消为止。
- 订单存储:用
customerOrders数组保存单个顾客的所有点餐选项,allOrders数组汇总所有顾客的订单,便于后续计算总价或展示订单。 - 输入验证:防止用户输入无效选项,提升交互体验。
内容的提问来源于stack exchange,提问作者Silktoxic
相关产品推荐
相关产品推荐

