Flagstrādāšana JavaScript
Tagad mēs iemācīsimies strādāt ar flagiem.
Flags ir īpašs mainīgais, kas
var iegūt tikai divas vērtības: true
un false. Ar flagu palīdzību var atrisināt
uzdevumus, kas pārbauda kaut kā neesamību:
piemēram, var pārbaudīt, vai masīvā
nav elementa ar noteiktu vērtību. Sāksim.
Atrisināsim šādu uzdevumu: dots masīvs
ar skaitļiem, jāpārbauda, vai tajā atrodas
elements ar vērtību 3 vai nē. Ja
atrodas - izvadīsim '+++', ja nē -
izvadīsim '---'.
Vispirms mēģināsim izvadīt '+++'.
Lai to izdarītu, iziesim cauri visiem masīva elementiem
un ar if noskaidrosim - vai pašreizējais
elements ir vienāds ar vērtību 3. Ja ir vienāds - izvadīsim
'+++':
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
}
}
Bet mūsu risinājums nav īsti labs: jo, ja
masīvā būs nevis viena vērtība 3,
bet vairākas, tad '+++' tiks izvadīts vairākas
reizes. Labosim mūsu masīvu (izveidosim
divi elementus ar vērtību 3) un par to pārliecināsimies:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // izvadīs vairākas reizes
}
}
Izlabosim problēmu: pārtrauksim ciklu ar
break, ja elements jau ir atrasts:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
break; // pārtrauksim ciklu
}
}
Tagad mēģināsim panākt, lai,
ja masīvā vispār nav elementu ar vērtību
3, tiktu izvadīts '---'. Izplatīts
pārpratums būtu pievienot else
mūsu if - šajā gadījumā '---' tiks
izvadīts visos elementos, kas nav
3:
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // izvadīs uz elementa 3
} else {
console.log('---'); // izvadīs uz elementiem 1, 2, 4, 5
}
}
Tātad, ideja pievienot else - slikta
ideja, nedarbīga. Lai atrisinātu šāda veida uzdevumus
(šādi uzdevumi sastopami pietiekami
bieži) izmanto tā sauktos flagus.
Kā jau minēts iepriekš, flags ir tāds
mainīgais, kas var iegūt divas vērtības:
true vai false.
Tātad, izveidosim mainīgo flag
ar šādu nozīmi: ja tas ir vienāds ar true,
tad masīvā ir elements 3, bet ja
false, tad šāda elementa nav.
Sākotnēji iestatīsim mainīgo flag
uz vērtību false - tas ir, pieņemsim,
ka elementa 3 masīvā nav:
let arr = [1, 2, 3, 4, 5];
let flag = false; // pieņemam, ka elementa 3 nav masīvā
Pēc tam palaidīsim ciklu ar if tā, kā mēs to darījām
agrāk. Ja cikls atklās, ka masīvā
ir elements 3 - tad iestatīsim mainīgo flag
uz vērtību true un iziesim no cikla
ar break:
let arr = [1, 2, 3, 4, 5];
let flag = false; // pieņemam, ka elementa 3 nav masīvā
for (let elem of arr) {
if (elem == 3) {
flag = true; // elements ir - pārdefinēsim mainīgo flag
break; // iziesim no cikla
}
}
Atbildi uz jautājumu, vai masīvā ir 3
vai nē, mēs varam dot tikai pēc cikla.
Un šī atbilde mums jau ir: pēc cikla
mainīgais flag varēja palikt false
vai varēja mainīt savu vērtību uz true,
ja cikls atklāja masīvā 3:
let arr = [1, 2, 3, 4, 5];
let flag = false;
for (let elem of arr) {
if (elem == 3) {
flag = true;
break;
}
}
// šeit mainīgais flag ir vai nu true, vai false
Tagad pēc cikla mēs varam izveidot if, kurš
apskatīsies uz mainīgo flag un izvadīs
ekrānā '+++' vai '---':
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('---');
}
Dots masīvs:
let arr = ['a', 'b', 'c', 'd', 'e'];
Pārbaudiet, vai šajā masīvā ir elements
'c'. Ja ir - izvadiet '+++',
bet ja nav - izvadiet '---'.
Uzrakstiet kodu, kas pārbaudīs skaitli, vai tas ir pirmskaitlis vai nē. Pirmskaitlis dalās tikai ar vieninieku un pašu sevi, un nedalās ar citiem skaitļiem.