Rad sa zastavicama u JavaScript-u
Sada ćemo naučiti kako da radimo sa zastavicama.
Zastavica je specijalna promenljiva koja
može da ima samo dve vrednosti: true
i false. Pomoću zastavica možemo rešavati
zadateke koji proveravaju odsustvo nečega:
na primer, možemo proveriti da u nizu
nema elementa sa određenom vrednošću. Hajde da
započnemo.
Hajde da rešimo sledeći zadatak: dat je niz
sa brojevima, treba proveriti da li u njemu postoji
element sa vrednošću 3 ili ne. Ako
postoji - ispisati '+++', ako ne -
ispisati '---'.
Za početak hajde da pokušamo da ispišemo '+++'.
Za to ćemo proći kroz sve elemente našeg niza
i pomoću if-a postaviti pitanje - da li je trenutni
element jednak vrednosti 3. Ako jeste - ispisaćemo
'+++':
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
}
}
Ali naše rešenje nije baš dobro: jer ako
u nizu bude ne jedna vrednost 3,
već nekoliko, onda će se '+++' ispisati nekoliko
puta. Hajde da ispravimo naš niz (napravimo
dva elementa sa vrednošću 3) i uverimo se u ovo:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // ispisaće se više puta
}
}
Popravićemo problem: prekinuti ćemo petlju pomoću
break, ako je element već pronađen:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
break; // prekinuti petlju
}
}
Hajde sada da pokušamo da postignemo da,
ako u nizu uopšte nema elemenata sa vrednošću
3, ispiše se '---'. Često pogrešno
mišljenje je da dodamo else
našem if-u - u tom slučaju će se '---'
ispisati za sve elemente koji nisu
3:
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // ispisaće se na elementu 3
} else {
console.log('---'); // ispisaće se na elementima 1, 2, 4, 5
}
}
Dakle, ideja da se doda else - loša je
ideja, ne funkcioniše. Za rešavanje zadataka sličnog
tipa (takvi zadaci se dovoljno često
javljaju) koriste se takozvane zastavice.
Kao što je već pomenuto, zastavica je takva
promenljiva koja može da primi dve vrednosti:
true ili false.
Dakle, hajde da napravimo promenljivu flag
sa takvom vrednošću: ako je jednaka true,
onda u nizu postoji element 3, a ako je
false, onda takav element ne postoji.
Početno ćemo postaviti promenljivu flag
na vrednost false - to jest smatraćemo,
da elementa 3 u nizu nema:
let arr = [1, 2, 3, 4, 5];
let flag = false; // smatramo da elementa 3 nema u nizu
Zatim ćemo pokrenuti petlju sa if-om, kao što smo to radili
ranije. Ako petlja otkrije da u nizu
postoji element 3 - onda ćemo postaviti promenljivu flag
na vrednost true i izaći iz petlje
pomoću break:
let arr = [1, 2, 3, 4, 5];
let flag = false; // smatramo da elementa 3 nema u nizu
for (let elem of arr) {
if (elem == 3) {
flag = true; // element postoji - promenićemo vrednost promenljive flag
break; // izaći ćemo iz petlje
}
}
Odgovor na pitanje, da li u nizu ima 3
ili ne, možemo da damo tek nakon petlje.
I taj odgovor već imamo: nakon petlje
promenljiva flag može ostati false
ili je mogla promeniti svoju vrednost na true,
ako je petlja otkrila u nizu 3:
let arr = [1, 2, 3, 4, 5];
let flag = false;
for (let elem of arr) {
if (elem == 3) {
flag = true;
break;
}
}
// ovde je promenljiva flag jednaka ili true, ili false
Sada, nakon petlje, možemo da napravimo if, koji
će pogledati promenljivu flag i ispisati
na ekran '+++' ili '---':
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('---');
}
Dat je niz:
let arr = ['a', 'b', 'c', 'd', 'e'];
Proverite da li u ovom nizu postoji element
'c'. Ako postoji - ispišite '+++',
a ako ne - ispišite '---'.
Napišite kod koji će proveravati da li je broj prost ili nije. Prost broj deli se samo sa jedan i sa samim sobom, a ne deli se drugim brojevima.