在 Javascript 的 While 循环中使用 Continue

Using Continue in a While loop in Javascript

请帮我找出我在这段代码中的错误。

var  numbers = [12, 34, 23, 98, 08, 78, 73, 48];
var i = 0;

while (i < numbers.length){
    if (numbers[i] >70){
        continue;
    }
    console.log(numbers[i])
    i++;
}

我要输出

12
34
23
8 
48

但代码显示输出:

12
34
23

并且运行不会停止。

您需要在使用 continue 之前更新 i 值,否则 i 的值将保持不变,从而导致循环变成无限循环。

var  numbers = [12, 34, 23, 98, 08, 78, 73, 48];
var i = 0;

while (i < numbers.length){
    if (numbers[i] >70){
        i++;
        continue;
    }
    console.log(numbers[i])
    i++;
}

你有一个无限循环,因为如果 numbers[i] > 70 它没有增加 i,那么下一个循环它会再次检查相同的条件而不增加 i 值。有多种方法可以解决此问题,但一种选择是在 numbers[i] <= 70 时输出值,并始终递增 i.

var numbers = [12, 34, 23, 98, 08, 78, 73, 48];
var i = 0;

while (i < numbers.length){
    if (numbers[i] <= 70){
        console.log(numbers[i]);
    }
    
    i++;
}

另一种选择是不同的循环:

var numbers = [12, 34, 23, 98, 08, 78, 73, 48];
var i = 0;

for(i = 0; i < numbers.length; i++) {
    if (numbers[i] > 70){
       continue;
    }
    
    console.log(numbers[i]);
}

或者更简单的方法:

var numbers = [12, 34, 23, 98, 08, 78, 73, 48];
var i = 0;

for(i = 0; i < numbers.length; i++) {
    if (numbers[i] <= 70){
        console.log(numbers[i]);
    }
}

您可以 re-write 您的逻辑,而不是中断 while 循环:

  if (numbers[i] < 71){
    console.log(numbers[i]);
  }

因此循环每次迭代的默认操作只是递增 i,并且控制台单独记录一个值 仅当满足条件时 .


工作示例:

let numbers = [12, 34, 23, 98, 08, 78, 73, 48];
let i = 0;

while (i < numbers.length){

  if (numbers[i] < 71){
    console.log(numbers[i]);
  }
  
  i++;
}