menu

Zászlók kezelése JavaScriptben

Most megtanuljuk, hogyan kell dolgozni zászlókkal. A zászló egy speciális változó, amely csak két értéket vehet fel: true és false. Zászlók segítségével megoldhatunk olyan feladatokat, amelyek valaminek a hiányát ellenőrzik: például ellenőrizhetjük, hogy egy tömbben nincs-e egy adott értékű elem. Kezdjük is el.

Oldjuk meg a következő feladatot: adott egy tömb számokkal, ellenőrizni kell, hogy van-e benne 3 értékű elem vagy sem. Ha van - írjuk ki a '+++' szöveget, ha nincs - írjuk ki a '---' szöveget.

Először próbáljuk meg kiírni a '+++' szöveget. Ehhez menjünk végig a tömb összes elemén és egy feltétellel kérdezzük meg - egyenlő-e az aktuális elem a 3 értékkel. Ha egyenlő - írjuk ki a '+++' szöveget:

let arr = [1, 2, 3, 4, 5]; for (let elem of arr) { if (elem == 3) { console.log('+++'); } }

De a megoldásunk nem túl jó: hiszen ha a tömbben nem egy 3 értékű elem lesz, hanem több, akkor a '+++' szöveg többször fog kiíródni. Javítsuk a tömbünket (tegyünk bele két 3 értékű elemet) és győződjünk meg erről:

let arr = [1, 2, 3, 4, 3, 5]; for (let elem of arr) { if (elem == 3) { console.log('+++'); // többször fog kiíródni } }

Javítsuk a problémát: szakítsuk meg a ciklust a break utasítással, ha az elemet már megtaláltuk:

let arr = [1, 2, 3, 4, 3, 5]; for (let elem of arr) { if (elem == 3) { console.log('+++'); break; // megszakítjuk a ciklust } }

Most próbáljuk meg megtenni, hogy ha a tömben egyáltalán nincs 3 értékű elem, akkor a '---' szöveg íródjon ki. Gyakori tévedés, hogy else ágat adunk a feltételünkhöz - ebben az esetben a '---' szöveg minden, 3 értékűtől különböző elemre kiíródik:

let arr = [1, 2, 3, 4, 5]; for (let elem of arr) { if (elem == 3) { console.log('+++'); // a 3-as elemnél íródik ki } else { console.log('---'); // az 1, 2, 4, 5 elemeknél íródik ki } }

Tehát az else ág hozzáadásának ötlete - rossz ötlet, nem működik. Az ilyen típusú feladatok megoldásához (az ilyen feladatok elég gyakoriak) használják az úgynevezett zászlókat.

Ahogy fentebb már említettük, a zászló egy olyan változó, amely csak két értéket vehet fel: true vagy false.

Tehát készítsünk egy flag változót a következő jelentéssel: ha egyenlő true-val, akkor a tömbben van 3 értékű elem, ha pedig false, akkor nincs ilyen elem.

Kezdetben állítsuk a flag változót false értékre - azaz feltételezzük, hogy a 3 értékű elem nincs a tömbben:

let arr = [1, 2, 3, 4, 5]; let flag = false; // feltételezzük, hogy a 3-as elem nincs a tömbben

Ezután indítsuk el a ciklust a feltétellel, ahogy azt korábban tettük. Ha a ciklus felfedezi, hogy a tömbben van 3 értékű elem - akkor állítsuk a flag változót true értékre és lépjünk ki a ciklusból a break utasítással:

let arr = [1, 2, 3, 4, 5]; let flag = false; // feltételezzük, hogy a 3-as elem nincs a tömbben for (let elem of arr) { if (elem == 3) { flag = true; // az elem megtalálható - újradefiniáljuk a flag változót break; // kilépünk a ciklusból } }

A arra a kérdésre, hogy van-e a tömbben 3 értékű elem vagy sem, csak a ciklus után tudunk válaszolni. És ez a válasz már megvan: a ciklus után a flag változó vagy false értéken marad, vagy true értékre változhat, ha a ciklus felfedezett a tömbben 3 értékű elemet:

let arr = [1, 2, 3, 4, 5]; let flag = false; for (let elem of arr) { if (elem == 3) { flag = true; break; } } // itt a flag változó vagy true, vagy false

Most a ciklus után készíthetünk egy feltételt, amely ránéz a flag változóra és kiírja a '+++' vagy a '---' szöveget:

let arr = [1, 2, 3, 4, 5]; let flag = false; for (let elem of arr) { if (elem == 3) { flag = true; break; } } if (flag === true) { console.log('+++'); } else { console.log('---'); }

Adott egy tömb:

let arr = ['a', 'b', 'c', 'd', 'e'];

Ellenőrizd, hogy ebben a tömbben van-e 'c' értékű elem. Ha van - írd ki a '+++' szöveget, ha nincs - írd ki a '---' szöveget.

Írj kódot, amely ellenőrzi, hogy egy szám prím-e vagy sem. Egy prím szám csak eggyel és önmagával osztható, más számokkal nem.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás