Kufanya Kazi na Bendera katika JavaScript
Sasa tutajifunza kufanya kazi na bendera.
Bendera ni tofauti maalum ambayo
inaweza kuchukua thamani mbili tu: true
na false. Kwa kutumia bendera zinaweza kutatuliwa
kazi zinazohitimu kutokuwepo kwa kitu fulani:
kwa mfano, inaweza kuhitimuwa, kwamba kwenye safu hakuna
kipengele chenye thamani maalum. Twende
zake.
Wacha tutatue kazi ifuatayo: imetolewa safu
ya nambari, inahitajika kuhitimu, ipo ndani yake
kipengele chenye thamani 3 au la. Kama
ipo - tutaandika '+++', kama
haipo -
tutaandika '---'.
Kwa mara ya kwanza wacha tujaribu kuandika '+++'.
Kwa hili tutapitia vipengele vyote vya safu yetu
na kwa "if" tutauliza - je, kipengele cha sasa
ni sawa na thamani 3? Kama ni sawa - tutaandika
'+++':
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
}
}
Lakini ufumbuzi wetu sio mzuri sana: maana kama
kwenye safu kutakuwa sio thamani moja 3,
lakini kadhaa, basi '+++' itaandikwa mara kadhaa.
Wacha tusahihishe safu yetu (tufanye
vipengele viwili chenye thamani 3) na tukae hakika na jambo hili:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // itaandika mara kadhaa
}
}
Wacha tusahihishe tatizo: tutamaliza kitanzi kwa kutumia
break, ikiwa kipengele tayari kimepatikana:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
break; // tumaliza kitanzi
}
}
Sasa wacha tujaribu kufanya hivi, ili,
kama kwenye safu hakuna kabisa vipengele chenye thamani
3, iandikwe '---'. Hitilafu ya kawaida
itakuwa kuongeza else kwa
"if" yetu - kwa hali hii '---'
itaandikwa kwa vipengele vyote visivyo
3:
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // itaandika kwenye kipengele 3
} else {
console.log('---'); // itaandika kwenye vipengele 1, 2, 4, 5
}
}
Kwa hiyo, wazo la kuongeza else - ni wazo
baya, halifanyi kazi. Kwa ajili ya kutatua kazi za aina hii
(kazi kama hizi hukutana mara
kwa mara) hutumiwa kinachojulikana kama bendera.
Kama tayari ilitajwa hapo juu, bendera ni tofauti
kama hiyo, ambayo inaweza kuchukua thamani mbili:
true au false.
Basi, wacha tufanye tofauti flag
na thamani kama hii: ikiwa ni sawa na true,
basi kwenye safu kuna kipengele 3, na ikiwa
false, basi hakuna kipengele kama hicho.
Mwanzoni wacha tuweke tofauti flag
kuwa na thamani false - yaani tutachukulia,
kwamba hakuna kipengele 3 kwenye safu:
let arr = [1, 2, 3, 4, 5];
let flag = false; // tunachukulia kwamba hakuna kipengele 3 kwenye safu
Kisha tutaanzisha kitanzi na "if" kama tulivyofanya
hayo mapema. Kama kitanzi kitagundua kuwa kwenye safu
kuna kipengele 3 - basi tunaweka tofauti flag
kuwa na thamani true na tutatoka kwenye kitanzi
kwa kutumia break:
let arr = [1, 2, 3, 4, 5];
let flag = false; // tunachukulia kwamba hakuna kipengele 3 kwenye safu
for (let elem of arr) {
if (elem == 3) {
flag = true; // kipengele kipo - tutabadilisha thamani ya tofauti flag
break; // tutaondoka kwenye kitanzi
}
}
Jibu la swali, ikiwa kwenye safu kuna 3
au la, tunaweza kutoa tu baada ya kitanzi.
Na jibu hili tayari tunalo: baada ya kitanzi
tofauti flag inaweza kubaki false
au inaweza kubadilisha thamani yake kuwa true,
ikiwa kitanzi kiligundua kwenye safu kuna 3:
let arr = [1, 2, 3, 4, 5];
let flag = false;
for (let elem of arr) {
if (elem == 3) {
flag = true;
break;
}
}
// hapa tofauti flag ni sawa na true, au false
Sasa baada ya kitanzi tunaweza kufanya "if", ambao
utaangalia tofauti flag na utaandika
ekranini '+++' au '---':
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('---');
}
Imetolewa safu:
let arr = ['a', 'b', 'c', 'd', 'e'];
Hitimu, kwamba kwenye safu hii kuna kipengele
'c'. Kama kuna - andika '+++',
na kama hakuna - andika '---'.
Andika code, ambayo itahitimu nambari kwa kuwa, ni rahisi au la. Nambari rahisi inagawanyika tu kwa moja na kwa yenyewe, na haigawanyiki kwa nambari nyingine.