我试图让这个循环工作,以便在数组中获得低于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);
试试看:
var multiploCincoArray = [];
for(i = 5; i <= 1000; i = i + 5) {
multiploCincoArray.push(i);
}
console.log(multiploCincoArray);
你的方法似乎不正确。
首先从单个变量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);
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)
在正确的轨道,但条件在错误的地方。将for(i = 1, r = i * 5; r < 1000; i++)
改为for(i = 1, r=5; r < 1000; r=i*5,i++)
应该使用let i
和let r
作为范围,但为了清楚起见,我把它留了出来。