【问题标题】:How to prevent the last statement from being logged to the console in a while loop?如何防止最后一条语句在while循环中记录到控制台?
【发布时间】:2021-08-23 09:52:06
【问题描述】:
考虑以下代码:
const cards = ['diamond', 'spade', 'heart', 'club'];
let currentCard;
while (currentCard !== 'spade'){
currentCard = cards[Math.floor(Math.random() * 4)];
console.log(currentCard);
}
结果还将spade 记录到控制台。
有什么办法可以避免这种情况吗?我想避免在这个 while 循环中将最后一条语句记录到控制台。
提前致谢!
【问题讨论】:
标签:
javascript
node.js
while-loop
【解决方案1】:
您可以永远循环并用if 语句中断。
const cards = ['diamond', 'spade', 'heart', 'club'];
let currentCard;
while (true) {
currentCard = cards[Math.floor(Math.random() * 4)];
if (currentCard === 'spade') break;
console.log(currentCard);
}
【解决方案2】:
While 评估仅在第一次运行之前以及范围内的代码完成之后运行。您将要在记录之前在 while 循环中添加一个检查。
if (currentCard == 'spade')
break;
【解决方案3】:
我的理解 - 你总是在记录下一张卡片
有两种方法可以做到这一点:
const cards = ['diamond', 'spade', 'heart', 'club'];
let currentCard;
while (currentCard !== 'spade'){
currentCard = cards[Math.floor(Math.random() * 4)];
(currentCard !== 'spade')?console.log(currentCard):'';
}
第二种方式:这里的日志记录是在下一次迭代中完成的。因此,您可能会观察到一个额外的 '' [空字符串] 被记录
const cards = ['diamond', 'spade', 'heart', 'club'];
let currentCard;
while (currentCard !== 'spade'){
console.log(currentCard);
currentCard = cards[Math.floor(Math.random() * 4)];
}