javascript - 嵌套循环迭代

标签 javascript

我正在使用嵌套循环来迭代数组 bookingArray。如果 bookingArrayroomNumber 与第一个循环 i 的索引匹配,则该 bookingArray 项应推送到新数组tableArray

我遇到了一个问题,即 else 语句中的多个条目被添加到生成的 tableArray 中。它可能与正确使用 break/continue 有关吗?我已阅读文档,但我找不到正确的解决方案。

预期结果:

"1: room booked",
"2: room available",
"3: room available",
"4: room available",
"5: room booked",
"6: room available",
"7: room available",
"8: room available",
"9: room booked",
"10: room available"

当前代码的 fiddle :

var bookingArray = [{
    "roomNumber": 1,
  },
  {
    "roomNumber": 5,
  },
  {
    "roomNumber": 9,
  }
];

var tableArray = [];


for (var i = 1; i < 11; i++) {
  for (var j = 0; j < bookingArray.length; j++) {
    if (i == bookingArray[j].roomNumber) {
      tableArray.push(bookingArray[j].roomNumber + ": room booked");
      break;
    } else {
      tableArray.push(i + ": room available");
    }
  }
}

console.log(tableArray);

最佳答案

因为每次外循环迭代,内循环都会运行多次。使用内部循环只是为了设置一个标志,一旦完成,然后根据该标志在每个外部循环迭代中推送一次:

var bookingArray = [{
    "roomNumber": 1,
  },
  {
    "roomNumber": 5,
  },
  {
    "roomNumber": 9,
  }
];

var tableArray = [];


for (var i = 1; i < 11; i++) {
  var isBooked = false;
  for (var j = 0; j < bookingArray.length; j++) {
    if (i == bookingArray[j].roomNumber) {
      isBooked = true;
      break;
    }
  }
  var msg = isBooked ? ": room booked" : ": room available";
  tableArray.push(i + msg);
}

console.log(tableArray);

关于javascript - 嵌套循环迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44741948/

相关文章:

Javascript随机生成变量名

javascript - eval() 在 WinJS 中不工作。禁用 WinJS.strictProcessing();在 Windows 8 商店应用程序中

javascript - 使用 Font-Awesome 显示复选框

javascript - 从头开始jQuery多文件上传

javascript - 我的 Node.js 服务器上的奇怪输出 - 删除对象

javascript - Yeoman Generator - 如何解析 Generator 项目的 Package.json

javascript - 使用 jQuery 发送表单时获取正确的对象数量

Javascript 'onbeforeunload()' 无法使用函数调用

javascript - 默认选中单选按钮

javascript - 如何通过单击按钮更改图像位置