JavaScript-ում դրոշների հետ աշխատանք
Այժմ մենք կսովորենք աշխատել դրոշների հետ:
Դրոշը հատուկ փոփոխական է, որն
կարող է ընդունել միայն երկու արժեք՝ true
և false: Դրոշների միջոցով կարելի է լուծել
այնպիսի խնդիրներ, որոնք ստուգում են որևէ բանի բացակայությունը.
Օրինակ, կարելի է ստուգել, որ զանգվածում
չկա տարր որոշակի արժեքով: Եկեք սկսենք:
Եկեք լուծենք հետևյալ խնդիրը. տրված է թվերով զանգված,
պետք է ստուգել, արդյոք դրա մեջ կա
3 արժեքով տարր, թե ոչ: Եթե կա,
արտածենք '+++', եթե ոչ՝
արտածենք '---':
Սկզբից եկեք փորձենք արտածել '+++':
Դրա համար կփոխենք մեր զանգվածի բոլոր տարրերը
և if-ով կհարցնենք՝ արդյոք ընթացիկ
տարրը հավասար է 3 արժեքին: Եթե հավասար է, արտածենք
'+++':
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
}
}
Սակայն մեր լուծումն այնքան էլ լավ չէ. եթե
զանգվածում լինի ոչ թե մեկ 3 արժեք,
այլ մի քանիսը, ապա '+++'-ը կարտածվի մի քանի
անգամ: Եկեք ուղղենք մեր զանգվածը (ստեղծենք
երկու տարր 3 արժեքով) և համոզվենք դրանում.
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // կարտածի մի քանի անգամ
}
}
Ուղղենք խնդիրը. ավարտենք ցիկլը օգտագործելով
break, եթե տարրը արդեն գտնվել է.
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
break; // ավարտում ենք ցիկլը
}
}
Հիմա եկեք փորձենք անել այնպես, որ
եթե զանգվածում ընդհանրապես չկան 3 արժեքով տարրեր,
արտածվի '---': Տարածված
սխալ կլինի ավելացնել else
մեր if-ին. Այս դեպքում '---'-ը կարտածվի
բոլոր այն տարրերի համար, որոնք
3 չեն.
let 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 տարրը զանգվածում չկա.
let arr = [1, 2, 3, 4, 5];
let flag = false; // ենթադրում ենք, որ 3 տարրը չկա զանգվածում
Այնուհետև կգործարկենք ցիկլ if-ով այնպես, ինչպես դա արել էինք
նախկինում: Եթե ցիկլը հայտնաբերի, որ զանգվածում
կա 3 տարր, ապա կդնենք flag փոփոխականը
true արժեքի և կդուրս գանք ցիկլից
օգտագործելով break.
let 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 տարր.
let 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 փոփոխականին և կարտածի
էկրանին '+++' կամ '---'.
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('---');
}
Տրված է զանգված.
let arr = ['a', 'b', 'c', 'd', 'e'];
Ստուգեք, որ այս զանգվածում կա
'c' տարր: Եթե կա՝ արտածեք '+++',
իսկ եթե չկա՝ արտածեք '---':
Գրեք կոդ, որը կստուգի թիվը՝ արդյոք այն պարզ է, թե ոչ: Պարզ թիվը բաժանվում է միայն մեկի և ինքն իր վրա, և չի բաժանվում այլ թվերի: