【问题标题】:Can a for loop increment/decrement by more than one?一个 for 循环可以增加/减少一个以上吗?
【发布时间】:2012-09-30 08:37:45
【问题描述】:

除了i++++i 之外,还有其他方法可以在Javascript 中增加for 循环吗?例如,我想增加 3 而不是 1。

for (var i = 0; i < myVar.length; i+3) {
   //every three
}

【问题讨论】:

  • 你不能用 i = i + 3 代替第三个参数吗?还是仅在 Java 中?
  • 是的,如果在 for 循环声明中使用 i++++i 就像 i+=1 一样,那么 i+=3 可以工作。
  • for 循环不会增加任何内容。 for 语句中使用的代码可以。这完全取决于您如何/如果/在哪里/何时修改i 或任何其他变量。
  • 这不是for循环,而是无限循环。你的意思是i+=3
  • 我知道这是一个简单的问题,有一个简单的解决方案,但反对票的原因是什么?我很确定它不是重复的。

标签: javascript for-loop increment


【解决方案1】:

为此有一个运算符。例如,如果我想将变量 i 更改为 3,那么:

var someValue = 9;
var Increment  = 3;
for(var i=0;i<someValue;i+=Increment){
//do whatever
}
要减少,请使用 -=
var someValue = 3;
var Increment  = 3;
for(var i=9;i>someValue;i+=Increment){
//do whatever
}

【讨论】:

    【解决方案2】:

    三元运算符的最后一部分允许您指定增量步长。例如,i++ 表示递增 1。i+=2 与 i=i+2,... 等相同。 示例:

    let val= [];
    
    for (let i = 0; i < 9; i+=2) {
      val = val + i+",";
    }
    
    
    console.log(val);
    

    预期结果:“2,4,6,8”

    'i' 可以是任何浮点数或整数,具体取决于所需的步长。

    【讨论】:

      【解决方案3】:
      for (var i = 0; i < 10; i = i + 2) {
          // code here
      }​
      

      【讨论】:

      • for (var i = 0; i &lt; 10; i+=2),因为i=i+2等于i+=2
      【解决方案4】:
      for (var i = 0; i < myVar.length; i+=3) {
         //every three
      }
      

      额外的

      Operator   Example    Same As
        ++       X ++        x = x + 1
        --       X --        x = x - 1
        +=       x += y      x = x + y
        -=       x -= y      x = x - y
        *=       x *= y      x = x * y
        /=       x /= y      x = x / y
        %=       x %= y      x = x % y
      

      【讨论】:

        【解决方案5】:

        for 循环:

        for(INIT; TEST; ADVANCE) {
            BODY
        }
        

        意思如下:

        INIT;
        while (true) {
            if (!TEST)
                break;
            BODY;
            ADVANCE;
        }
        

        您几乎可以为INITTESTADVANCEBODY 编写任何表达式。

        请注意++ 运算符和变体是具有副作用的运算符(如果您不使用它们,如i+=1 等,应尽量避免使用它们):

        • ++i 表示 i+=1; return i
        • i++ 表示 oldI=i; i+=1; return oldI

        例子:

        > i=0
        > [i++, i, ++i, i, i--, i, --i, i]
        [0, 1, 2, 2, 2, 1, 0, 0]
        

        【讨论】:

          【解决方案6】:

          你当然可以。其他人已经正确指出你需要做i += 3。你不能做你发布的事情,因为你在这里所做的只是添加i + 3,但永远不会将结果分配回ii++ 只是i = i + 1 的简写,同样i +=3i = i + 3 的简写。

          【讨论】:

            【解决方案7】:

            Andrew Whitaker 的回答是正确的,但您可以对任何部分使用任何表达式。
            请记住,第二个(中间)表达式应该计算,以便可以将其与布尔值 truefalse 进行比较。

            当我使用for loop 时,我认为它是

            for (var i = 0; i < 10; ++i) {
                /* expression */
            }
            

            存在

            var i = 0;
            while( i < 10 ) {
                /* expression */
                ++i;
            }
            

            【讨论】:

              【解决方案8】:

              使用+=assignment operator

              for (var i = 0; i < myVar.length; i += 3) {
              

              从技术上讲,您可以在 for 循环的最终表达式中放置您想要的任何表达式,但它通常用于更新计数器变量。

              有关 for 循环每个步骤的更多信息,check out the MDN article

              【讨论】:

              • 感谢您提供详细信息-我很确定有办法将更高级的表达式放入第三个插槽-我只是忘记了它需要定义变量,所以显然i+3不起作用。
              • @brentonsrine:没问题,很高兴我能帮上忙
              • 我们做i+3时死循环的原因是什么?
              • @SanjayShr i+3 不会改变i 的值
              • @Nahid 是的,我评论了我的答案。谢谢
              猜你喜欢
              • 2022-12-04
              • 2011-12-22
              • 1970-01-01
              • 2019-08-15
              • 2014-12-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多