JavaScript-ում դրոշների հետ աշխատանք

Այժմ մենք կսովորենք աշխատել դրոշների հետ: Դրոշը հատուկ փոփոխական է, որն կարող է ընդունել միայն երկու արժեք՝ true և false: Դրոշների միջոցով կարելի է լուծել այնպիսի խնդիրներ, որոնք ստուգում են որևէ բանի բացակայությունը. Օրինակ, կարելի է ստուգել, որ զանգվածում չկա տարր որոշակի արժեքով: Եկեք սկսենք:

Եկեք լուծենք հետևյալ խնդիրը. տրված է թվերով զանգված, պետք է ստուգել, արդյոք դրա մեջ կա 3 արժեքով տարր, թե ոչ: Եթե կա, արտածենք '+++', եթե ոչ՝ արտածենք '---':

Սկզբից եկեք փորձենք արտածել '+++': Դրա համար կփոխենք մեր զանգվածի բոլոր տարրերը և if-ով կհարցնենք՝ արդյոք ընթացիկ տարրը հավասար է 3 արժեքին: Եթե հավասար է, արտածենք '+++':

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

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

Սակայն մեր լուծումն այնքան էլ լավ չէ. եթե զանգվածում լինի ոչ թե մեկ 3 արժեք, այլ մի քանիսը, ապա '+++'-ը կարտածվի մի քանի անգամ: Եկեք ուղղենք մեր զանգվածը (ստեղծենք երկու տարր 3 արժեքով) և համոզվենք դրանում.

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

for (let elem of arr) {
  if (elem == 3) {
    console.log('+++'); // կարտածի մի քանի անգամ
  }
}

Ուղղենք խնդիրը. ավարտենք ցիկլը օգտագործելով break, եթե տարրը արդեն գտնվել է.

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

for (let elem of arr) {
  if (elem == 3) {
    console.log('+++');
    break;  // ավարտում ենք ցիկլը
  }
}

Հիմա եկեք փորձենք անել այնպես, որ եթե զանգվածում ընդհանրապես չկան 3 արժեքով տարրեր, արտածվի '---': Տարածված սխալ կլինի ավելացնել else մեր if-ին. Այս դեպքում '---'-ը կարտածվի բոլոր այն տարրերի համար, որոնք 3 չեն.

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

for (let elem of arr) {
  if (elem == 3) {
    console.log('+++'); // կարտածվի 3 տարրի համար
  } else {
    console.log('---'); // կարտածվի 1, 2, 4, 5 տարրերի համար
  }
}

Այսպիսով, else ավելացնելու գաղափարը վատ գաղափար է, այն չի աշխատի: Նմանատիպ խնդիրներ լուծելու համար (այդպիսի խնդիրները բավականին հաճախ են հանդիպում) օգտագործում են այսպես կոչված դրոշներ:

Ինչպես արդեն նշվեց վերևում, դրոշը այնպիսի փոփոխական է, որը կարող է ընդունել երկու արժեք. true կամ false:

Այսպիսով, եկեք ստեղծենք flag փոփոխական հետևյալ արժեքով. եթե այն հավասար է true-ի, ապա զանգվածում կա 3 տարր, իսկ եթե false, ապա այդպիսի տարր չկա:

Սկզբում դրենք flag փոփոխականը false արժեքի՝ կենթադրենք, որ 3 տարրը զանգվածում չկա.

javascriptlet arr = [1, 2, 3, 4, 5];
let flag = false; // ենթադրում ենք, որ 3 տարրը չկա զանգվածում

Այնուհետև կգործարկենք ցիկլ if-ով այնպես, ինչպես դա արել էինք նախկինում: Եթե ցիկլը հայտնաբերի, որ զանգվածում կա 3 տարր, ապա կդնենք flag փոփոխականը true արժեքի և կդուրս գանք ցիկլից օգտագործելով break.

javascriptlet arr = [1, 2, 3, 4, 5];
let flag = false; // ենթադրում ենք, որ 3 տարրը չկա զանգվածում

for (let elem of arr) {
  if (elem == 3) {
    flag = true; // տարր կա - վերասահմանենք flag փոփոխականը
    break; // դուրս գալ ցիկլից
  }
}

Հարցի պատասխանը, թե արդյոք զանգվածում կա 3 տարր, թե ոչ, մենք կարող ենք տալ միայն ցիկլից հետո: Եվ այդ պատասխանն արդեն ունենք. ցիկլից հետո flag փոփոխականը կարող էր մնալ false կամ կարող էր փոխել իր արժեքը true-ի, եթե ցիկլը հայտնաբերել է զանգվածում 3 տարր.

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

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

// այստեղ flag փոփոխականը հավասար է կամ true, կամ false

Այժմ, ցիկլից հետո, մենք կարող ենք ստեղծել if, որը կնայի flag փոփոխականին և կարտածի էկրանին '+++' կամ '---'.

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

Տրված է զանգված.

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

Ստուգեք, որ այս զանգվածում կա 'c' տարր: Եթե կա՝ արտածեք '+++', իսկ եթե չկա՝ արտածեք '---':

Задание 2

Գրեք կոդ, որը կստուգի թիվը՝ արդյոք այն պարզ է, թե ոչ: Պարզ թիվը բաժանվում է միայն մեկի և ինքն իր վրա, և չի բաժանվում այլ թվերի: