JavaScript-da bayroqlar bilan ishlash

Hozir biz bayroqlar bilan ishlashni o'rganamiz. Bayroq - bu faqat ikkita qiymat qabul qiladigan maxsus o'zgaruvchi: true va false. Bayroqlar yordamida ma'lum bir narsaning yo'qligini tekshiradigan masalalarni yechish mumkin: masalan, massivda ma'lum qiymatga ega element yo'qligini tekshirish mumkin. Keling, boshlaymiz.

Keling, quyidagi masalani yechamiz: sonlar massivi berilgan, unda 3 qiymatiga ega element bormi yo'qmi tekshirish kerak. Agar bo'lsa - '+++' chiqaramiz, yo'q bo'lsa - '---' chiqaramiz.

Boshlash uchun keling, '+++' ni chiqarishga harakat qilaylik. Buning uchun massivning barcha elementlarini aylanamiz va agar bilan so'raymiz - joriy element 3 qiymatiga tengmi. Agar teng bo'lsa - '+++' ni chiqaramiz:

javascriptlet arr = [1, 2, 3, 4, 5];

for (let elem of arr) {
  if (elem == 3) {
    console.log('+++');
  }
}

Ammo bizning yechimimiz unchali yaxshi emas: agar massivda bitta 3 qiymati bo'lmasa, balki bir nechta bo'lsa, '+++' bir necha marta chiqadi. Keling, massivni o'zgartiramiz (ikki ta 3 qiymatiga ega element qilamiz) va bunga ishonch hosil qilamiz:

javascriptlet arr = [1, 2, 3, 4, 3, 5];

for (let elem of arr) {
  if (elem == 3) {
    console.log('+++'); // bir necha marta chiqaradi
  }
}

Muammoni tuzatamiz: agar element topilgan bo'lsa, break yordamida siklni tugatamiz:

javascriptlet arr = [1, 2, 3, 4, 3, 5];

for (let elem of arr) {
  if (elem == 3) {
    console.log('+++');
    break;  // siklni tugatamiz
  }
}

Keling, endi massivda umuman 3 qiymatiga ega element bo'lmasa, '---' chiqadigan qilishga harakat qilaylik. Keng tarqalgan xato - bizning if ga else qo'shish - bunda '---' 3 bo'lmagan barcha elementlar uchun chiqadi:

javascriptlet arr = [1, 2, 3, 4, 5];

for (let elem of arr) {
  if (elem == 3) {
    console.log('+++'); // 3-elementida chiqaradi
  } else {
    console.log('---'); // 1, 2, 4, 5-elementlarida chiqaradi
  }
}

Shunday qilib, else qo'shish g'oyasi - yomon g'oya, ishlamaydi. Shu kabi masalalarni yechish uchun (bunday masalalar etarlicha tez-tez uchraydi) bayroq deb ataladigan narsalardan foydalaniladi.

Yuqorida aytib o'tilganidek, bayroq - bu shunday o'zgaruvchiki, ikkita qiymat qabul qiladi: true yoki false.

Shunday qilib, keling, flag o'zgaruvchisini yarataylik quyidagi qiymat bilan: agar u true ga teng bo'lsa, demak massivda 3 elementi bor, agar false bo'lsa, demak bunday element yo'q.

Boshlang'ichda flag o'zgaruvchisini false qiymatiga o'rnatamiz - ya'ni massivda 3 elementi yo'q deb hisoblaymiz:

javascriptlet arr = [1, 2, 3, 4, 5];
let flag = false; // massivda 3 elementi yo'q deb hisoblaymiz

Keyin ilgari qilganimizdek siklni ishga tushiramiz. Agar sikl massivda 3 elementi borligini aniqlasa - flag o'zgaruvchisini true qiymatiga o'rnatamiz va break yordamida siklndan chiqamiz:

javascriptlet arr = [1, 2, 3, 4, 5];
let flag = false; // massivda 3 elementi yo'q deb hisoblaymiz

for (let elem of arr) {
  if (elem == 3) {
    flag = true; // element bor - flag o'zgaruvchisini qayta o'rnatamiz
    break; // siklndan chiqamiz
  }
}

Massivda 3 bormi yo'qmi degan savolga javobni faqat sikl tugagandan keyin bera olamiz. Va bu javob bizda allaqachon bor: sikl tugagandan keyin flag o'zgaruvchisi false da qolishi mumkin yoki agar sikl massivda 3 borligini anqilagan bo'lsa true qiymatiga o'zgarishi mumkin:

javascriptlet arr = [1, 2, 3, 4, 5];
let flag = false;

for (let elem of arr) {
  if (elem == 3) {
    flag = true;
    break;
  }
}

// bu yerda flag o'zgaruvchisi true yoki false ga teng

Endi sikl tugagandan keyin biz if yasashimiz mumkin, u flag o'zgaruvchisiga qaraydi va ekranga '+++' yoki '---' ni chiqaradi:

javascriptlet 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('---');
}
Задание 1

Massiv berilgan:

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

Ushbu massivda 'c' elementi bormi yo'qmi tekshiring. Agar bo'lsa - '+++' ni chiqaring, yo'q bo'lsa - '---' ni chiqaring.

Задание 2

Sonning tub yoki tub emasligini tekshiradigan kod yozing. Tub son faqat bitta va o'ziga qoldiqsiz bo'linadi, boshqa sonlarga bo'linmaydi.