Kan een for-lus met meer dan één verhogen/verlagen?

Zijn er naast ++ien i++nog andere manieren om een ++i-lus in Javascript te verhogen? Ik wil bijvoorbeeld verhogen met 3 in plaats van één.

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

Antwoord 1, autoriteit 100%

Gebruik de +=toewijzing operator:

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

Technisch gezien kunt u elke gewenste uitdrukking in de laatste uitdrukking van de for-lus plaatsen, maar deze wordt meestal gebruikt om de tellervariabele bij te werken.

Voor meer informatie over elke stap van de for-lus, controleer uit het MDN-artikel.


Antwoord 2, autoriteit 4%

Een ++i-lus:

for(INIT; TEST; ADVANCE) {
    BODY
}

Betekent het volgende:

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

Je kunt bijna elke uitdrukking schrijven voor INIT, TEST, ADVANCEen BODY.

Houd er rekening mee dat de ++-operators en varianten operatoren zijn met bijwerkingen (men moet proberen ze te vermijden als u ze niet gebruikt, zoals i+=1en dergelijke):

  • i++betekent i+=1; return i
  • ++ibetekent oldI=i; i+=1; return oldI

Voorbeeld:

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

Antwoord 3, autoriteit 3%

for (var i = 0; i < 10; i = i + 2) {
    // code here
}​

Antwoord 4, autoriteit 2%

Andrew Whitakers antwoord is waar, maar je kunt elke uitdrukking voor elk deel gebruiken.
Onthoud dat de tweede (middelste) expressie moet evalueren, zodat deze kan worden vergeleken met een boolean trueof false.

Als ik een ++igebruik loop, ik zie het als

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

als zijnde

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

Antwoord 5

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

aanvullend

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

Antwoord 6

Dat kan je zeker. Anderen hebben er terecht op gewezen dat u i += 3moet doen. Je kunt niet doen wat je hebt gepost, want het enige wat je hier doet is i + 3toevoegen, maar het resultaat nooit teruggeven aan i. ++iis slechts een afkorting voor i = i + 1, op dezelfde manier is i +=3een afkorting voor i = i + 3.


Antwoord 7

Met het laatste deel van de ternaire operator kunt u de stapgrootte specificeren. i++ betekent bijvoorbeeld verhogen met 1. i+=2 is hetzelfde als i=i+2,… etc.
Voorbeeld:

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

Verwachte resultaten: “2,4,6,8”

‘i’ kan elk zwevend punt of geheel getal zijn, afhankelijk van de gewenste stapgrootte.


Antwoord 8

Hiervoor is een operator. Als ik bijvoorbeeld een variabele i met 3 wil veranderen, dan:

var someValue = 9;
var Increment  = 3;
for(var i=0;i<someValue;i+=Increment){
//do whatever
}

Other episodes