for循环,多个条件不起作用(JS)

问题描述 投票:1回答:5

我试图让这个循环工作,以便在数组中获得低于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);

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

javascript for-loop multiple-conditions
5个回答
2
投票

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

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

console.log(multiploCincoArray);

2
投票

试试看:

var multiploCincoArray = []; 

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

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

1
投票

你的方法似乎不正确。

首先从单个变量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);

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

是相同的:

 i = 1, r = i * 5

 while(r < 1000) i++;

所以实际上你只设置r一次(到5),然后只要i小于1000就增加r,但是因为r没有改变循环是无限的并且崩溃了你的浏览器。

你可能会这样做:

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

0
投票

在正确的轨道,但条件在错误的地方。将for(i = 1, r = i * 5; r < 1000; i++)改为for(i = 1, r=5; r < 1000; r=i*5,i++)

应该使用let ilet r作为范围,但为了清楚起见,我把它留了出来。

© www.soinside.com 2019 - 2024. All rights reserved.