Del 5: Løkker

Når du må gjenta kode, er løkker løsningen. I stedet for å skrive console.log() 10 ganger, lar løkker deg kjøre samme kode 10 ganger enkelt.

Loading editor...

for (let i = 1; i <= 10; i++) {
  console.log(i);
}

I JavaScript finnes to hovedtyper: for og while.

For-løkke

Brukes når du vet hvor mange ganger koden skal gjentas.

for (initialisering; betingelse; oppdatering) {
  // kode som gjentas
}
  • Initialisering: Startverdi, f.eks. let i = 1
  • Betingelse: Når skal løkken stoppe? f.eks. i <= 10
  • Oppdatering: Endring per runde, f.eks. i++

Eksempel på en løkke som teller fra 1 til 10:

Loading editor...

for (let i = 1; i <= 10; i++){
  console.log(i);
}

Eksempelkode som teller nedover fra 10 til 1:

Loading editor...

for (let x = 10; x >= 1; x--){
  console.log(x);
}

Du kan også la variabelen hoppe flere steg hver runde:

Loading editor...

for (let x = 1; x < 20; x += 3){
  console.log(x);
}
Gå gjennom bokstaver i en string

Du kan iterere over en tekst (string) bokstav for bokstav, og sjekke om bokstaven finnes i en annen string.

Loading editor...

let tekst = "Banan";
let vokaler = "aeiouyæøåAEIOUYÆØÅ";

for (let bokstav of tekst) {
  if (vokaler.includes(bokstav)) {
    console.log("Vokal:", bokstav);
  } else {
    console.log("Ikke vokal:", bokstav);
  }
}
Gå gjennom arrays med for-løkker

En av de vanligste bruksområdene for en for-løkke er å gå gjennom elementene i et array.

Loading editor...

let frukter = ["Eple", "Banan", "Appelsin", "Pære"];

for (let i = 0; i < frukter.length; i++) {
  console.log("Frukt:", frukter[i]);
}

Man kan også bruke for of for enkel iterasjon, når du ikke skal bruke indeksen til noe.

Loading editor...

let frukter = ["Eple", "Banan", "Appelsin", "Pære"];

for (let frukt of ["Eple", "Banan", "Appelsin", "Pære"]) {
  console.log("Frukt:", frukt);
}
While-løkke

En while-løkke gjentar koden så lenge en betingelse er sann (true).

Loading editor...

let i = 0;

while (i < 5) {
  console.log("Verdien av i: ", i);
  i++;
}

Løkken fortsetter å kjøre så lenge betingelsen i < 5 er true. For hver runde øker i med 1. Når i blir 5, blir betingelsen false og løkken stopper.

Pass på: hvis betingelsen aldri blir false, får du en uendelig løkke, og javascript-konsollen vil crashe. Derfor er det viktig at du oppdaterer i i løkken. Eksempel nedenfor på en uendelig løkke:

let i = 0;
while (i < 5) {
  console.log(i); // i endres aldri!
}
Når skal du bruke while-løkke?

Bruk en while-løkke når du ikke vet hvor mange ganger koden skal kjøre.

Eksempel: Finn ut hvor mange ganger du må flippe en mynt før du får kron.

Loading editor...

let myntkast = 0;
let erKron = false

while (!erKron) {
  myntkast++; // øker antall myntkast
  erKron = Math.random() < 0.5 // gir True dersom < 0.5
}

console.log("Det tok ", myntkast, "kast for å få kron.")
break og continue

break avslutter løkken med en gang. continue hopper over resten av koden i denne runden og går til neste iterasjon.

Eksempel på break: Stopp når vi finner et tall større enn 10.

Loading editor...

let tall = [3, 7, 12, 9];
for (let i = 0; i < tall.length; i++) {
  if (tall[i] > 10) {
    console.log("Fant større enn 10:", tall[i]);
    break; // avslutt løkken her
  }
}

Eksempel på continue: Skriv bare ut oddetall fra 1 til 10.

Loading editor...

let i = 0;
while (i < 10) {
  i++;
  if (i % 2 === 0) continue; // hopp over partall
  console.log("Oddetall:", i);
}
Oppgaver: Løkker
Oppgave 1: Skriv ut tall 1–10
Lag tre løsninger som skriver ut tallene fra 1 til 10 i konsollen: 1. Uten løkker 2. Med en for-løkke 3. Med en while-løkke
Oppgave 2: Tall opp til brukerens tall
Lag en kode som skriver ut alle tall fra 1 til et tall brukeren skriver inn via prompt(). Husk å sjekke at brukeren skriver inn et gyldig tall.
Oppgave 3: Stjernepyramide
Skriv et program som skriver ut en pyramide av stjerner. Brukeren skal skrive inn antall rader. For eksempel: hvis brukeren skriver 4, blir resultatet:
*
**
***
****
Oppgave 4: Hangman (vanskelig utfording)
Lag et Hangman-spill: - Velg et ord som skal gjettes, f.eks. 'Elvebakken' - Brukeren gjetter en bokstav av gangen - Brukeren har 10 liv - Bruk for...of for å sjekke om bokstaven finnes i ordet - Bruk en while-løkke for å telle antall liv.