Vėliavų naudojimas JavaScript
Dabar mes išmoksime dirbti su vėliavomis.
Vėliava - tai specialus kintamasis, kuris
gali įgyti tik dvi reikšmes: true
ir false. Naudojant vėliavas galima spręsti
uždavinius, tikrinančius ko nors nebuvimą:
pavyzdžiui, galima patikrinti, ar masyve
nėra elemento su tam tikra reikšme. Pradėkime.
Išspręskime tokį uždavinį: duotas masyvas
su skaičiais, reikia patikrinti, ar jame
yra elementas su reikšme 3, ar ne. Jei
yra - išveskime '+++', jei nėra -
išveskime '---'.
Pirmiausia pabandykime išvesti '+++'.
Norėdami tai padaryti, pereisime per visus mūsų masyvo elementus
ir if sakiniais klaursime - ar dabartinis
elementas lygus reikšmei 3. Jei lygus - išveskime
'+++':
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
}
}
Tačiau mūsų sprendimas nėra labai geras: juk jei
masyve bus ne viena reikšmė 3,
o kelios, tai '+++' bus išvesta kelis kartus.
Pataisykime mūsų masyvą (padarykime
du elementus su reikšme 3) ir įsitikinkime tuo:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // išves kelis kartus
}
}
Ištaisykime problemą: užbaigsime ciklą naudodami
break, jei elementas jau rastas:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
break; // užbaigiame ciklą
}
}
Dabar pabandykime padaryti taip, kad,
jei masyve išvis nėra elementų su reikšme
3, būtų išvestas '---'. Dažnas
supainiojimas būtų pridėti else prie
mūsų if sakinio - tokioje situacijoje '---' bus
išvestas visiems elementams, kurie nėra
3:
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // išves ant elemento 3
} else {
console.log('---'); // išves ant elementų 1, 2, 4, 5
}
}
Taigi, idėja pridėti else - bloga
idėja, neveikianti. Tokio tipo uždaviniams spręsti
(tokie uždaviniai pasitaiko pakankamai
dažnai) ir naudojamos taip vadinamos vėliavos.
Kaip jau minėta anksčiau, vėliava - tai toks
kintamasis, kuris gali įgyti dvi reikšmes:
true arba false.
Taigi, sukurkime kintamąjį flag
su tokia reikšme: jei jis lygus true,
tai masyve yra elementas 3, o jei
false, tokio elemento nėra.
Iš pradžių nustatykime kintamąjį flag
į reikšmę false - tai yra, laikysime,
kad elemento 3 masyve nėra:
let arr = [1, 2, 3, 4, 5];
let flag = false; // manome, kad elemento 3 masyve nėra
Tada paleiskime ciklą su if sakiniais taip, kaip mes darėme
anksčiau. Jei ciklas aptiks, kad masyve
yra elementas 3 - tai nustatysime kintamąjį flag
į reikšmę true ir išeisime iš ciklo
naudodami break:
let arr = [1, 2, 3, 4, 5];
let flag = false; // manome, kad elemento 3 masyve nėra
for (let elem of arr) {
if (elem == 3) {
flag = true; // elementas yra - perapibrėžsime kintamąjį flag
break; // išeisime iš ciklo
}
}
Atsakymą į klausimą, ar masyve yra 3,
ar ne, galime duoti tik po ciklo.
Ir šį atsakymą mes jau turime: po ciklo
kintamasis flag galėjo likti false
arba galėjo pakeisti savo reikšmę į true,
jei ciklas aptiko masyve 3:
let arr = [1, 2, 3, 4, 5];
let flag = false;
for (let elem of arr) {
if (elem == 3) {
flag = true;
break;
}
}
// čia kintamasis flag lygus arba true, arba false
Dabar po ciklo mes galime padaryti if sakinį, kuris
pažiūrės į kintamąjį flag ir išves
į ekraną '+++' arba '---':
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('---');
}
Duotas masyvas:
let arr = ['a', 'b', 'c', 'd', 'e'];
Patikrinkite, ar šiame masyve yra elementas
'c'. Jei yra - išveskite '+++',
o jei nėra - išveskite '---'.
Parašykite kodą, kuris tikrins skaičių, ar jis yra pirminis, ar ne. Pirminis skaičius dalijasi tik iš vieneto ir iš savęs, ir nesidalija iš kitų skaičių.