我正在使用嵌套循环来迭代数组 bookingArray
。如果 bookingArray
项 roomNumber
与第一个循环 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/