menu

Работа с флагове в JavaScript

Сега ще се научим да работим с флагове. Флагът е специална променлива, която може да приема само две стойности: true и false. С помощта на флагове могат да се решават задачи, проверяващи липсата на нещо: например, може да се провери дали в масив няма елемент с определена стойност. Давайте да започнем.

Нека решим следната задача: даден е масив с числа, трябва да се провери дали в него има елемент със стойност 3 или не. Ако има - извеждаме '+++', ако няма - извеждаме '---'.

Първо, нека се опитаме да изведем '+++'. За това ще обходим всички елементи на нашия масив и с условна проверка ще питаме - дали текущият елемент е равен на стойността 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 към нашата условна проверка - в този случай '---' ще се извежда за всички елементи, които не са 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 няма в масива

След това ще стартираме цикъл с условна проверка така, както сме го правили преди. Ако цикълът открие, че в масива има елемент 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

Сега след цикъла можем да направим условна проверка, която ще погледне променливата 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'. Ако има - изведете '+++', а ако няма - изведете '---'.

Напишете код, който ще проверява числото дали е просто или не. Простото число се дели само на единица и на себе си, и не се дели на други числа.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне