ფლაგებთან მუშაობა 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
მნიშვნელობით, გამოიტანოს '---'. გავრცელებული
შეცდომა იქნება ჩვენს if-ს 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 არ არის მასივში
შემდეგ გავუშვათ ციკლი 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'. თუ არის - გამოიტანეთ '+++',
ხოლო თუ არა - გამოიტანეთ '---'.
დაწერეთ კოდი, რომელიც შეამოწმებს რიცხვს იმაზე, მარტივია ის თუ არა. მარტივი რიცხვი იყოფა მხოლოდ ერთზე და საკუთარ თავზე, და არ იყოფა სხვა რიცხვებზე.