一个 for 循环可以增加/减少一个以上吗?

Posted

技术标签:

【中文标题】一个 for 循环可以增加/减少一个以上吗?【英文标题】:Can a for loop increment/decrement by more than one? 【发布时间】: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 我知道这是一个简单的问题,有一个简单的解决方案,但反对票的原因是什么?我很确定它不是重复的。 【参考方案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 是的,我评论了我的答案。谢谢

以上是关于一个 for 循环可以增加/减少一个以上吗?的主要内容,如果未能解决你的问题,请参考以下文章

NetLogo可以用循环语句吗

Lua for循环减少我?奇怪的行为[重复]

java 超多次数的for循环如何改善

包含2个以上列表的列表在循环中运行缓慢我可以使用Thread来加快速度吗?

理解 for 循环逻辑

怎样在for循环变量中,将循环变量赋值给一个变量 批处理 bat