【问题标题】: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)];
        }
        

        【讨论】:

          猜你喜欢
          • 2011-10-12
          • 1970-01-01
          • 2014-07-13
          • 2021-02-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-14
          • 1970-01-01
          相关资源
          最近更新 更多