web-dev-qa-db-ja.com

forループを1つ以上インクリメント/デクリメントできますか?

i++++i以外に、Javascriptでforループをインクリメントする他の方法はありますか?たとえば、1ではなく3ずつ増やしたい。

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

+=割り当て演算子 を使用します。

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

技術的には、任意の式をforループの最終式に配置できますが、通常はカウンター変数を更新するために使用されます。

Forループの各ステップの詳細については、 MDNの記事をご覧ください

200
Andrew Whitaker

forループ:

for(INIT; TEST; ADVANCE) {
    BODY
}

以下を意味します:

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

INITTESTADVANCE、およびBODYには、ほぼすべての式を記述できます。

++演算子とバリアントは副作用のある演算子であることに注意してください(i+=1などのように使用していない場合は、それらを避けるようにしてください)。

  • ++ii+=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]
12
ninjagecko
for (var i = 0; i < 10; i = i + 2) {
    // code here
}​
7
Adil Malik

Andrew Whitakerの答えは真実ですが、どの部分でも任意の表現を使用できます。
2番目の(中間)式がブール値trueまたはfalseと比較できるように評価する必要があることを覚えておいてください。

for loop を使用すると、

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

として

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

確かにできます。他の人は、i += 3を行う必要があることを正しく指摘しています。ここで行っているのはi + 3を追加するだけですが、結果をiに割り当てないため、投稿したことはできません。 i++i = i + 1の短縮形であり、同様にi +=3i = i + 3の短縮形です。

1
Sudesh Banskota
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
0
Jayantha