menu

Praca z flagami w JavaScript

Teraz nauczymy się pracować z flagami. Flaga to specjalna zmienna, która może przyjmować tylko dwie wartości: true i false. Za pomocą flag można rozwiązywać zadania sprawdzające brak czegoś: na przykład można sprawdzić, czy w tablicy nie ma elementu o określonej wartości. Zaczynajmy.

Rozwiążmy następujące zadanie: dana jest tablica z liczbami, należy sprawdzić, czy znajduje się w niej element o wartości 3, czy nie. Jeśli tak - wypiszemy '+++', jeśli nie - wypiszemy '---'.

Na początek spróbujmy wypisać '+++'. Aby to zrobić, przeiterujemy po wszystkich elementach naszej tablicy i za pomocą instrukcji if będziemy pytać - czy bieżący element jest równy wartości 3. Jeśli tak - wypiszemy '+++':

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

Ale nasze rozwiązanie nie jest najlepsze: bo jeśli w tablicy będzie nie jedna wartość 3, a kilka, to '+++' wypisze się kilka razy. Zmodyfikujmy naszą tablicę (stwórzmy dwa elementy o wartości 3) i przekonajmy się o tym:

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

Poprawmy problem: przerwijmy pętlę za pomocą break, jeśli element już został znaleziony:

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

Spróbujmy teraz zrobić tak, aby, jeśli w tablicy w ogóle nie ma elementów o wartości 3, wypisywało się '---'. Powszechnym błędem będzie dodanie else do naszej instrukcji if - w tym przypadku '---' będzie wypisywane dla wszystkich elementów, które nie są równe 3:

let arr = [1, 2, 3, 4, 5]; for (let elem of arr) { if (elem == 3) { console.log('+++'); // wypisze dla elementu 3 } else { console.log('---'); // wypisze dla elementów 1, 2, 4, 5 } }

A zatem, pomysł z dodaniem else - jest złym pomysłem, nie działającym. Do rozwiązywania zadań tego typu (takie zadania spotyka się dość często) używa się tak zwanych flag.

Jak już wspomniano wyżej, flaga - to taka zmienna, która może przyjmować dwie wartości: true lub false.

A zatem, stwórzmy zmienną flag o takim znaczeniu: jeśli jest równa true, to w tablicy znajduje się element 3, a jeśli false, to takiego elementu nie ma.

Początkowo ustawmy zmienną flag na wartość false - to znaczy będziemy zakładać, że elementu 3 nie ma w tablicy:

let arr = [1, 2, 3, 4, 5]; let flag = false; // zakładamy, że elementu 3 nie ma w tablicy

Następnie uruchomimy pętlę z instrukcją if tak, jak robiliśmy to wcześniej. Jeśli pętla wykryje, że w tablicy znajduje się element 3 - to ustawimy zmienną flag na wartość true i wyjdziemy z pętli za pomocą break:

let arr = [1, 2, 3, 4, 5]; let flag = false; // zakładamy, że elementu 3 nie ma w tablicy for (let elem of arr) { if (elem == 3) { flag = true; // element jest - przedefiniujemy zmienną flag break; // wychodzimy z pętli } }

Odpowiedź na pytanie, czy w tablicy jest 3 czy nie, możemy dać dopiero po pętli. I tę odpowiedź już mamy: po pętli zmienna flag mogła pozostać false lub mogła zmienić swoją wartość na true, jeśli pętla wykryła w tablicy 3:

let arr = [1, 2, 3, 4, 5]; let flag = false; for (let elem of arr) { if (elem == 3) { flag = true; break; } } // tutaj zmienna flag jest równa albo true, albo false

Teraz po pętli możemy zrobić instrukcję if, która spojrzy na zmienną flag i wypisze na ekran '+++' lub '---':

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

Dana jest tablica:

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

Sprawdź, czy w tej tablicy znajduje się element 'c'. Jeśli tak - wypisz '+++', a jeśli nie - wypisz '---'.

Napisz kod, który będzie sprawdzał, czy liczba jest pierwsza, czy nie. Liczba pierwsza dzieli się tylko przez jeden i przez samą siebie, i nie dzieli się przez inne liczby.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć