A while-ciklussal ismételten végrehajthatsz kódot, amíg egy bizonyos feltétel teljesül.
A while kulcsszóval írjuk le, amelyet kerek zárójelbe zárt feltétel követ, majd egy kapcsos zárójelbe zárt kódblokk, amely a ciklus törzsét tartalmazza.
while (condition) {
// code that is executed repeatedly as long as the condition is true
}
A JavaScriptben do-while ciklus is létezik. Itt a feltétel ellenőrzése a ciklustörzs végrehajtása után történik. Ez akkor hasznos, ha a feltétel a törzsben végzett kiértékelésektől függ.
do {
// The code here will always be executed once and then
// repeatedly while the condition is true.
} while (condition);
A ciklustörzsön belül a break kulcsszóval teljesen leállíthatod a ciklus végrehajtását.
Ezzel szemben a continue kulcsszó csak az aktuális iteráció végrehajtását állítja le, és a következővel folytatja.
A continue segítségével gyakran elkerülheted, hogy a ciklustörzs nagy részeit elágazásba csomagold.
let i = 0;
while (i < 100) {
i = i + 2;
if (i % 3 === 0) {
continue;
}
// The code here will only be executed when i was not divisible
// by 3 in the check above.
}
Az elágazás mellett a JavaScriptben switch-utasítás is létezik a logika feltételes végrehajtására.
Akkor használjuk, amikor egyetlen változót több lehetőséggel kell összehasonlítani.
Az összehasonlítás szigorú egyenlőség (===) vizsgálatával történik, lásd az összehasonlítás fogalmát.
Egy x változó esetén a JavaScript switch-utasítása a következő szintaxissal rendelkezik.
switch (x) {
case option1:
// code that is executed when "x === option1" is true
break;
case option2:
// code that is executed when "x === option2" is true
break;
default:
// code that is executed when x does not equal any of the options
}
A default eset opcionális, és arra szolgál, hogy lefuttass valamilyen kódot, ha a változó egyik másik lehetőséggel sem egyezik.
A fenti break utasításokra azért van szükség, mert a JavaScriptben alapértelmezés szerint minden eset „átesik” a következőre.
Ez azt jelenti, hogy break utasítás nélkül az első egyező lehetőség alatti összes eset kódja lefutna, még akkor is, ha x nem egyezett azokkal a lehetőségekkel.
Ez az „alapértelmezett átesés” gyakori buktató, amikor switch-et használsz a JavaScriptben.
Egy függvényen belül a break helyett return-t is használhatsz, hogy elkerüld ezt a problémát.
A barátod, Li Mei egy gyümölcslébárt vezet, ahol finom kevert gyümölcsleveket árul. Gyakori vendég vagy a boltjában, és rájöttél, hogy megkönnyíthetnéd a barátod életét. Úgy döntesz, hogy a programozási tudásodat használva segítesz Li Mei-nek a munkájában.
Li Mei szereti előre megmondani a vendégeinek, mennyit kell várniuk egy megrendelt italra az itallapról.
Nehezen jegyez meg pontos számokat, mert az italok elkészítési ideje változó.
A 'Pure Strawberry Joy' 0,5 percet vesz igénybe, az 'Energizer' és a 'Green Garden' 1,5 percet, a 'Tropical Island' 3 percet, az 'All or Nothing' pedig 5 percet.
Minden más italra (például az akciós ajánlatokra) 2,5 perc elkészítési időt feltételezhetsz.
Hogy segíts a barátodnak, írj egy timeToMixJuice függvényt, amely argumentumként kap egy italt az itallapról, és visszaadja, hány percbe telik elkészíteni.
timeToMixJuice('Tropical Island');
// => 3
timeToMixJuice('Berries & Lime');
// => 2.5
Li Mei sok alkotásához kerül limecikk, akár hozzávalóként, akár a díszítés részeként. Ezért amikor reggel elkezdi a műszakot, gondoskodnia kell róla, hogy a limecikkekkel teli láda elegendő legyen az egész napra.
Készítsd el a limesToCut függvényt, amely megkapja, hány limecikket kell Li Mei-nek felvágni, valamint egy tömböt, amely a kéznél lévő egész lime-ok készletét képviseli.
A 'small' lime 6 cikket ad, a 'medium' 8-at, a 'large' pedig 10-et.
Li Mei mindig abban a sorrendben vágja fel a lime-okat, ahogy azok a listában szerepelnek, az elsővel kezdve.
Addig folytatja, amíg el nem érte a szükséges cikkek számát, vagy el nem fogytak a lime-ok.
Li Mei szeretné előre tudni, hány lime-ot kell felvágni.
A limesToCut függvény adja vissza a felvágandó lime-ok számát.
limesToCut(25, ['small', 'small', 'large', 'medium', 'small']);
// => 4
Li Mei mindig délután 3-ig dolgozik. Utána az alkalmazottja, Dmitry veszi át a munkát. Gyakran előfordul, hogy Li Mei műszakjának végén vannak olyan italok, amelyeket megrendeltek, de még nem készültek el. Ilyenkor Dmitry készíti el a maradék italokat.
A könnyebb átadás érdekében készítsd el a remainingOrders függvényt, amely megkapja a Li Mei műszakjából hátralévő percek számát és egy tömböt a megrendelt, de még el nem készült italokkal.
A függvény adja vissza azokat a rendeléseket, amelyeknek az elkészítését Li Mei már nem tudja elkezdeni a munkanapja vége előtt.
A műszakból hátralévő idő mindig nagyobb lesz, mint 0. Az elkészítendő italok tömbje soha nem lesz üres. A rendeléseket továbbá abban a sorrendben készítik el, ahogy a tömbben szerepelnek. Ha Li Mei elkezd egy italt keverni, mindig be is fejezi, még akkor is, ha kicsit tovább kell dolgoznia. Ha nem maradt olyan rendelés, amivel Dmitrynek foglalkoznia kell, a függvény üres tömböt adjon vissza.
remainingOrders(5, ['Energizer', 'All or Nothing', 'Green Garden']);
// => ['Green Garden']
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.