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 '+++':

javascriptlet 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:

javascriptlet 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:

javascriptlet 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:

javascriptlet 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:

javascriptlet 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:

javascriptlet 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:

javascriptlet 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 '---':

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

Duotas masyvas:

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

Patikrinkite, ar šiame masyve yra elementas 'c'. Jei yra - išveskite '+++', o jei nėra - išveskite '---'.

Задание 2

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ų.