Gibt es neben i++ und ++i noch andere Möglichkeiten, eine for - Schleife in Javascript zu erhöhen? Zum Beispiel möchte ich um 3 statt um eins erhöhen.

for (var i = 0; i < myVar.length; i+3) {
   //every three
}
153
brentonstrine 10 Okt. 2012 im 03:16

7 Antworten

Beste Antwort

Verwenden Sie den Zuweisungsoperator += Zuweisung:

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

Technisch gesehen können Sie jeden gewünschten Ausdruck in den endgültigen Ausdruck der for-Schleife einfügen, dieser wird jedoch normalerweise zum Aktualisieren der Zählervariablen verwendet.

Weitere Informationen zu den einzelnen Schritten der for-Schleife finden Sie unter im MDN Artikel.

237
Andrew Whitaker 9 Okt. 2012 im 23:23

Im letzten Teil des ternären Operators können Sie die Schrittgröße des Inkrements angeben. Zum Beispiel bedeutet i ++ ein Inkrementieren um 1. i + = 2 ist dasselbe wie i = i + 2, ... usw. Beispiel:

let val= [];

for (let i = 0; i < 9; i+=2) {
  val = val + i+",";
}


console.log(val);

Erwartete Ergebnisse: "2,4,6,8"

'i' kann abhängig von der gewünschten Schrittgröße ein beliebiges Gleitkomma oder eine ganze Zahl sein.

-1
Neville Lusimba 3 Sept. 2018 im 05:41

Andrew Whitakers Antwort ist wahr, aber Sie können jeden Ausdruck für jeden Teil verwenden.
Denken Sie daran, dass der zweite (mittlere) Ausdruck ausgewertet werden sollte, damit er mit einem booleschen true oder false verglichen werden kann.

Wenn ich eine for -Schleife verwende, Ich denke daran als

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

Als zu sein

var i = 0;
while( i < 10 ) {
    /* expression */
    ++i;
}
5
Paul S. 9 Okt. 2012 im 23:32
for (var i = 0; i < 10; i = i + 2) {
    // code here
}​
7
Barry 17 Aug. 2018 im 20:09
for (var i = 0; i < myVar.length; i+=3) {
   //every three
}

zusätzliche

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
1
Jayantha 20 Feb. 2018 im 08:02

Das kannst du sicher. Andere haben richtig darauf hingewiesen, dass Sie i += 3 tun müssen. Sie können nicht das tun, was Sie gepostet haben, da Sie hier nur i + 3 hinzufügen, das Ergebnis jedoch niemals wieder i zuweisen. i++ ist nur eine Abkürzung für i = i + 1, ähnlich wie i +=3 eine Abkürzung für i = i + 3.

1
Sudesh Banskota 24 Mai 2017 im 00:22

Eine for Schleife:

for(INIT; TEST; ADVANCE) {
    BODY
}

Bedeutet folgendes:

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

Sie können fast jeden Ausdruck für INIT, TEST, ADVANCE und BODY schreiben.

Beachten Sie, dass die ++ Operatoren und Varianten Operatoren mit Nebenwirkungen sind (man sollte versuchen, sie zu vermeiden, wenn Sie sie nicht wie i+=1 und dergleichen verwenden):

  • ++i bedeutet i+=1; return i
  • i++ bedeutet oldI=i; i+=1; return oldI

Beispiel:

> i=0
> [i++, i, ++i, i, i--, i, --i, i]
[0, 1, 2, 2, 2, 1, 0, 0]
13
Adil Malik 20 Nov. 2017 im 16:20