【问题标题】:for loop with multiple conditions not working (JS)具有多个条件的 for 循环不起作用(JS)
【发布时间】:2019-07-07 19:17:02
【问题描述】:

我正在尝试使这个循环工作,以便在数组中获得低于 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


    【解决方案1】:

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

    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);
      

      【讨论】:

        【解决方案3】:

        您的方法似乎不对 imo。

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

        【讨论】:

        • 这将比 OP 尝试的方法慢五倍(如果它会被修复)
        • 只是展示了如何解决这个问题,您甚至不需要循环来测试值,您可以简单地从最小可能乘数开始并继续添加乘数。 @JonasWilms
        【解决方案4】:
         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)
        

        【讨论】:

        • 非常感谢,我不明白为什么r 没有改变!。
        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 2023-01-29
          • 2021-12-28
          • 2020-08-21
          • 1970-01-01
          • 2020-04-10
          • 1970-01-01
          • 2019-10-10
          • 2017-05-26
          • 2019-07-23
          相关资源
          最近更新 更多