Флагҳо дар 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⁅/n ⁆ набошад, '---' чоп шавад. Гумоне, ки ба миён меояд
ин аст, ки else⁅/c ⁆ ба
if-и худ илова кунем - дар ин сурат '---' хоҳад
барои ҳама унсурҳое, ки 3⁅/n ⁆ нестанд, чоп шавад:
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⁅/c ⁆ - идеяи ноком
аст, корнакунанда. Барои ҳалли масъалаҳои аз ин
навъ (чунин масъалаҳо дучор мешаванд)
флагҳои номӣ истифода мешаванд.
Чун аллакай дар боло зикр шуд, флаг - ин чунин тағйирёбанда аст, ки метавонад ду қимат қабул кунад:
true⁅/c ⁆ ё false⁅/c ⁆.
Пас, биёед тағйирёбандаи flag⁅/c ⁆ созем
бо чунин қимат: агар он ба true⁅/c ⁆ баробар бошад,
пас дар массив унсури 3⁅/n ⁆ мавҷуд аст, агар ба
false⁅/c ⁆ баробар бошад, пас чунин унсуре нест.
Дар ибтидо тағйирёбандаи flag⁅/c ⁆ -ро
ба қимати false⁅/c ⁆ мегузорем - яъне ҳисоб мекунем,
ки унсури 3⁅/n ⁆ дар массив нест:
let arr = [1, 2, 3, 4, 5];
let flag = false; // ҳисоб мекунем, ки унсури 3 дар массив нест
Сипас сиклиро бо if ба тавре оғоз мекунем, ки мо ин корро
пештар кардем. Агар сикли бояд, ки дар массив
унсури 3 мавҷуд аст - пас тағйирёбандаи flag⁅/c ⁆ -ро
ба қимати true⁅/c ⁆ мегузорем ва аз сикл
бо ёрии break⁅/c ⁆ берун меравем:
let arr = [1, 2, 3, 4, 5];
let flag = false; // ҳисоб мекунем, ки унсури 3 дар массив нест
for (let elem of arr) {
if (elem == 3) {
flag = true; // унсур мавҷуд аст - тағйирёбандаи flag -ро қайта таъриф мекунем
break; // аз сикл берун меравем
}
}
Ҷавоб ба саволе, ки оё дар массив 3⁅/n ⁆
мавҷуд аст ё не, мо метавонем танҳо пас аз сикл диҳем.
Ва ин ҷавоб аллакай дар дасти мост: пас аз сикл
тағйирёбандаи flag⁅/c ⁆ метавонист false⁅/c ⁆ бимонад
ё қимати худро ба true⁅/c ⁆ иваз кунад,
агар сикли дар массив 3⁅/n ⁆ -ро пай бурда бошад:
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⁅/c ⁆ нигарад ва
дар экран '+++'⁅/s ⁆ ё '---'⁅/s ⁆ чоп кунад:
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'⁅/s ⁆ мавҷуд аст.
Агар мавҷуд бошад - '+++'⁅/s ⁆ чоп кунед,
ва агар набошад - '---'⁅/s ⁆ чоп кунед.
Рамзе нависед, ки рақамро аз рӯи он тафтиш кунад, ки содда аст ё не. Рақами содда танҳо ба як ва ба худи худ тақсим мешавад, ва ба дигар рақамҳо тақсим намешавад.