You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 18:45:42