JavaScript-də bayraqlarla işləmək
İndi biz bayraqlarla işləməyi öyrənəcəyik.
Bayraq - yalnız iki dəyər qəbul edə bilən xüsusi dəyişəndir:
true və false. Bayraqların köməyi ilə
bir şeyin olmamasını yoxlayan məsələləri həll etmək olar:
məsələn, massivdə müəyyən dəyəri olan elementin olmadığını
yoxlamaq olar. Gəlin başlayaq.
Gəlin aşağıdakı məsələni həll edək: ədədlərdən ibarət massiv
verilib, onun içində 3 dəyəri olan elementin olub-olmadığını
yoxlamaq lazımdır. Əgər varsa - '+++' çap edək,
yoxdursa - '---' çap edək.
Əvvəlcə '+++' çap etməyə çalışaq.
Bunun üçün massivimizin bütün elementlərini gəzəcəyik
və if ilə soruşacağıq - cari element 3 dəyərinə bərabərdirmi?
Əgər bərabərdirsə - '+++' çap edək:
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
}
}
Lakin bizim həllimiz çox yaxşı deyil: çünki əgər
massivdə bir 3 dəyəri deyil,
bir neçə olarsa, onda '+++' bir neçə dəfə
çap olunacaq. Gəlin massivimizi dəyişək (iki
elementi 3 dəyəri ilə edək) və buna əmin olaq:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // bir neçə dəfə çap edəcək
}
}
Problemi düzəldək: əgər element artıq tapılıbsa,
break ilə döngünü bitirək:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
break; // döngünü bitirək
}
}
Gəlin indi elə edək ki, əgər massivdə ümumiyyətlə 3 dəyəri olan element
yoxdursa, '---' çap olunsun. Ümumi səhv
bizim if-ə else əlavə etmək olardı - bu halda
'---' 3 olmayan bütün elementlər üçün
çap olunacaq:
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // 3-cü elementdə çap edəcək
} else {
console.log('---'); // 1, 2, 4, 5-ci elementlərdə çap edəcək
}
}
Deməli, else əlavə etmək fikri - pis
fikirdir, işləməz. Bu tip məsələləri həll etmək üçün
(belə məsələlər kifayət qədər tez-tez rast gəlinir) sözdə bayraqlardan
istifadə edirlər.
Artıq yuxarıda qeyd olunduğu kimi, bayraq - elə bir
dəyişəndir ki, iki dəyər qəbul edə bilər:
true və ya false.
Deməli, gəlin flag dəyişəni edək
belə bir məna ilə: əgər o true-a bərabərdirsə,
onda massivdə 3 elementi var, əgər
false-dırsa, onda belə element yoxdur.
Əvvəlcə flag dəyişənini
false dəyərinə qoyaq - yəni hesab edək ki,
massivdə 3 elementi yoxdur:
let arr = [1, 2, 3, 4, 5];
let flag = false; // hesab edirik ki, massivdə 3 elementi yoxdur
Sonra döngüni if ilə elə işə salaq ki, biz bunu
əvvəllər etdiyimiz kimi. Əgər döngü aşkar edərsə ki, massivdə
3 elementi var - onda flag dəyişənini
true dəyərinə qoyaq və döngüdən
break ilə çıxaq:
let arr = [1, 2, 3, 4, 5];
let flag = false; // hesab edirik ki, massivdə 3 elementi yoxdur
for (let elem of arr) {
if (elem == 3) {
flag = true; // element var - flag dəyişənini yenidən təyin edək
break; // döngüdən çıxaq
}
}
Massivdə 3 olub-olmadığı sualına cavabı
biz ancaq döngüdən sonra verə bilərik.
Və bu cavab artıq bizdə var: döngüdən sonra
flag dəyişəni false olaraq qala bilər
ya da dəyərini true olaraq dəyişə bilər,
əgər döngü massivdə 3 aşkar etdisə:
let arr = [1, 2, 3, 4, 5];
let flag = false;
for (let elem of arr) {
if (elem == 3) {
flag = true;
break;
}
}
// burada flag dəyişəni ya true, ya da false-ə bərabərdir
İndi döngüdən sonra biz if edə bilərik ki,
flag dəyişəninə baxsın və
ekranda '+++' və ya '---' çap etsin:
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('---');
}
Massiv verilib:
let arr = ['a', 'b', 'c', 'd', 'e'];
Yoxlayın ki, bu massivdə 'c' elementi
varmı? Əgər varsa - '+++' çap edin,
yoxdursa - '---' çap edin.
Ədədin sadə olub-olmadığını yoxlayan kod yazın. Sadiə ədəd ancaq birə və özünə bölünür, digər ədədlərə bölünmür.