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

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

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

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

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

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

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

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

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

Imetolewa safu:

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

Hitimu, kwamba kwenye safu hii kuna kipengele 'c'. Kama kuna - andika '+++', na kama hakuna - andika '---'.

Задание 2

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.