多个条件不工作的 for 循环 (JS)

for loop with multiple conditions not working (JS)

我试图让这个循环工作,以便在数组中获得小于 1000 的 5 的倍数(是的,刚开始使用 euler),但它总是让我的控制台崩溃:

var multiploCincoArray = []; 

for(i = 1, r = i * 5; r < 1000; i++) {
    multiploCincoArray.push(r);
}
console.log(multiploCincoArray);

我知道停止条件有问题,但我似乎找不到它。

我知道我也能做到:

var multiploCincoArray = []; 

for(i = 1; i <= 199 ; i++) { 
    multiploCincoArray.push(5 * i);
}
console.log(multiploCincoArray);

但我想遵循第一个脚本中显示的路径(如果可能)...

您可以将计算移至条件部分。

var multiploCincoArray = [];
for (var i = 1, r; r = i * 5, r < 1000; i++) {
    multiploCincoArray.push(r);
}

console.log(multiploCincoArray);

 for(i = 1, r = i * 5; r < 1000; i++){

等同于:

 i = 1, r = i * 5

 while(r < 1000) i++;

所以实际上你只设置 r 一次(到 5),然后你增加 i 只要 r 小于 1000,但是 r 不会'更改循环是无限的并且会导致浏览器崩溃。

你可以这样做:

 for(let i = 5; i < 1000; i += 5)

我觉得你的方法不对。

首先从单个变量i开始,迭代到1000

for (var i=1; i<1000; i++)

通过i%5检查 i 是否是 5 的倍数,如果是则将值压入数组。

var array = [];

for (var i=1; i<1000; i++) {
  if (i%5 === 0) {
    array.push(i);
  }
}

console.log(array);

试试看:

var multiploCincoArray = []; 

for(i = 5; i <= 1000; i = i + 5) { 

    multiploCincoArray.push(i);
}
console.log(multiploCincoArray);

在正确的轨道上,但条件不对。将 for(i = 1, r = i * 5; r < 1000; i++) 更改为 for(i = 1, r=5; r < 1000; r=i*5,i++)

应该使用 let ilet r 作为范围,但为了清楚起见,我将其省略。