Amikor tömbökkel dolgozol, előfordul, hogy minden egyes értékre le szeretnéd futtatni ugyanazt a kódot. Ezt hívjuk úgy, hogy iterálunk vagy ciklust futtatunk a tömbön.
Itt azt az esetet nézzük meg, amikor nem szeretnéd módosítani a tömböt menet közben. Ha a tömböket át szeretnéd alakítani, nézd meg helyette a tömbátalakítások fogalmát.
for ciklusA tömb iterálásának legegyszerűbb módja a for ciklus használata, lásd a ciklusok fogalmát.
const numbers = [6.0221515, 10, 23];
for (let i = 0; i < numbers.length; i++) {
console.log(numbers[i]);
}
// => 6.0221515
// => 10
// => 23
for...of ciklusAmikor minden iterációban közvetlenül az értékkel szeretnél dolgozni, és egyáltalán nincs szükséged az indexre, használhatsz for...of ciklust.
A for...of ugyanúgy működik, mint a fentebb látott egyszerű for ciklus, csak itt nem kell a ciklusváltozóként az indexszel bajlódnod: helyette közvetlenül az értéket kapod meg.
const numbers = [6.0221515, 10, 23];
// Because re-assigning number inside the loop will be very
// confusing, disallowing that via const is preferable.
for (const number of numbers) {
console.log(number);
}
// => 6.0221515
// => 10
// => 23
Ahogy a hagyományos for ciklusokban is, használhatod a continue utasítást az aktuális iteráció leállításához, a break utasítást pedig a ciklus teljes leállításához.
forEach metódusMinden tömb rendelkezik egy forEach metódussal, amellyel bejárhatod a tömb elemeit.
A forEach paraméterként egy callbacket fogad.
A callback függvény minden egyes tömbelemre egyszer hívódik meg.
Az aktuális elem, annak indexe és a teljes tömb argumentumként kerül átadásra a callbacknek.
Gyakran csak az aktuális elemet vagy az indexet használjuk.
const numbers = [6.0221515, 10, 23];
numbers.forEach((number, index) => console.log(number, index));
// => 6.0221515 0
// => 10 1
// => 23 2
Miután a forEach ciklus elindult, nincs mód az iteráció leállítására.
A break és a continue utasítás nem létezik ebben a kontextusban.
Feltörekvő bűvészként Elyse-nek sokféleképpen kell elemeznie a pakliját. Hogy egyszerű legyen a dolog, csak 1-10 értékű kártyákat használ.
Elyse szeretné tudni, hány adott típusú kártya van a paklijában.
Írj egy cardTypeCheck függvényt, amely két paramétert kap: egy kártyatömböt (Elyse pakliját) és a megszámolandó kártya típusát.
A függvény használjon forEach-ot, és adja vissza a megadott típusú kártyák számát a pakliban.
const cardType = 3;
cardTypeCheck([1, 2, 3, 4], cardType);
// => 1
Egy másik trükkhöz Elyse-nek tudnia kell, hány páratlan vagy páros kártya van a paklijában.
Készíts egy determineOddEvenCards függvényt, amely két paramétert kap: egy kártyatömböt (Elyse pakliját) és egy Boolean értéket (a true a „páros”, a false a „páratlan” megfelelője).
Ez a függvény egyetlen számot adjon vissza: a pakliban lévő páratlan vagy páros kártyák számát (attól függően, mit ér a második argumentum).
Gyakorlásképpen ezúttal for...of ciklust használj a függvény megvalósításában.
determineOddEvenCards([1, 2, 3, 1, 5, 6], true);
// => 2
determineOddEvenCards([1, 2, 3, 1, 5, 6], false);
// => 4
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) JavaScript nyelvet 37 fogalom159 feladat segítségével, valódi emberi mentorálással, mindez ingyen.