⊗jsPmLpFl 165 of 505 menu

Práce s příznaky v JavaScriptu

Nyní se naučíme pracovat s příznaky. Příznak je speciální proměnná, která může nabývat pouze dvou hodnot: true a false. Pomocí příznaků lze řešit úkoly, které ověřují nepřítomnost něčeho: lze například zkontrolovat, že v poli není prvek s určitou hodnotou. Pojďme začít.

Pojďme vyřešit následující úkol: je dáno pole s čísly, je třeba zkontrolovat, zda v něm je prvek s hodnotou 3 nebo ne. Pokud ano - vypište '+++', pokud ne - vypište '---'.

Pro začátek zkusme vypsat '+++'. K tomu projdeme všechny prvky našeho pole a pomocí if se budeme ptát - je aktuální prvek roven hodnotě 3. Pokud je roven - vypíšeme '+++':

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

Ale naše řešení není příliš dobré: pokud v poli bude ne jedna hodnota 3, ale několik, pak se '+++' vypíše několikrát Pojďme upravit naše pole (udělejme dva prvky s hodnotou 3) a přesvědčme se o tom:

let arr = [1, 2, 3, 4, 3, 5]; for (let elem of arr) { if (elem == 3) { console.log('+++'); // vypíše několikrát } }

Pojďme problém opravit: ukončíme cyklus pomocí break, pokud byl prvek již nalezen:

let arr = [1, 2, 3, 4, 3, 5]; for (let elem of arr) { if (elem == 3) { console.log('+++'); break; // ukončíme cyklus } }

Nyní zkusme udělat to, aby, pokud v poli vůbec nejsou prvky s hodnotou 3, vypisovalo se '---'. Častým omylem je přidat else k našemu ifu - v tomto případě se '---' bude vypisovat pro všechny prvky, které nejsou 3:

let arr = [1, 2, 3, 4, 5]; for (let elem of arr) { if (elem == 3) { console.log('+++'); // vypíše na prvku 3 } else { console.log('---'); // vypíše na prvcích 1, 2, 4, 5 } }

Takže, nápad přidat else - je špatný nápad, nefunkční. Pro řešení úkolů tohoto druhu (takové úkoly se vyskytují dostatečně často) se používají takzvané příznaky.

Jak již bylo zmíněno výše, příznak je taková proměnná, která může nabývat dvou hodnot: true nebo false.

Takže, udělejme proměnnou flag s tímto významem: pokud je rovna true, pak v poli je prvek 3, a pokud false, pak takový prvek není.

Nejprve nastavme proměnnou flag na hodnotu false - to znamená, že budeme předpokládat, že prvek 3 v poli není:

let arr = [1, 2, 3, 4, 5]; let flag = false; // předpokládáme, že prvek 3 v poli není

Poté spustíme cyklus s ifem tak, jak jsme to dělali dříve. Pokud cyklus zjistí, že v poli je prvek 3 - pak nastavíme proměnnou flag na hodnotu true a ukončíme cyklus pomocí break:

let arr = [1, 2, 3, 4, 5]; let flag = false; // předpokládáme, že prvek 3 v poli není for (let elem of arr) { if (elem == 3) { flag = true; // prvek existuje - přenastavíme proměnnou flag break; // ukončíme cyklus } }

Odpověď na otázku, zda je v poli 3 nebo ne, můžeme dát až po cyklu. A tuto odpověď již máme: po cyklu proměnná flag mohla zůstat false nebo mohla změnit svou hodnotu na true, pokud cyklus objevil v poli 3:

let arr = [1, 2, 3, 4, 5]; let flag = false; for (let elem of arr) { if (elem == 3) { flag = true; break; } } // zde je proměnná flag rovna buď true, nebo false

Nyní po cyklu můžeme udělat if, který se podívá na proměnnou flag a vypíše na obrazovku '+++' nebo '---':

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('---'); }

Je dáno pole:

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

Zkontrolujte, zda v tomto poli je prvek 'c'. Pokud ano - vypište '+++', a pokud ne - vypište '---'.

Napište kód, který bude kontrolovat, zda je číslo prvočíslo nebo ne. Prvočíslo je dělitelné pouze jedničkou a samo sebou, a není dělitelné jinými čísly.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout