⊗jsPmLpFl 165 of 505 menu

Làm việc với cờ (flag) trong JavaScript

Bây giờ chúng ta sẽ học cách làm việc với cờ (flag). Flag là một biến đặc biệt, chỉ có thể mang một trong hai giá trị: truefalse. Với sự trợ giúp của flag, chúng ta có thể giải quyết các nhiệm vụ kiểm tra sự vắng mặt của một thứ gì đó: ví dụ: có thể kiểm tra xem trong mảng có phần tử với một giá trị nhất định hay không. Hãy bắt đầu.

Hãy giải quyết nhiệm vụ sau: cho một mảng các số, cần kiểm tra xem trong đó có phần tử với giá trị 3 hay không. Nếu có - in ra '+++', nếu không - in ra '---'.

Trước tiên, hãy thử in ra '+++'. Để làm điều này, chúng ta sẽ duyệt qua tất cả các phần tử của mảng và dùng câu lệnh if để hỏi - phần tử hiện tại có bằng giá trị 3 hay không. Nếu bằng - chúng ta sẽ in ra '+++':

let arr = [1, 2, 3, 4, 5]; for (let elem of arr) { if (elem == 3) { console.log('+++'); } }

Nhưng giải pháp của chúng ta không tốt lắm: vì nếu trong mảng không phải chỉ có một giá trị 3, mà có vài giá trị, thì '+++' sẽ được in ra nhiều lần. Hãy sửa mảng của chúng ta (tạo ra hai phần tử với giá trị 3) và đảm bảo điều này:

let arr = [1, 2, 3, 4, 3, 5]; for (let elem of arr) { if (elem == 3) { console.log('+++'); // sẽ in ra nhiều lần } }

Hãy sửa vấn đề: kết thúc vòng lặp bằng cách sử dụng break, nếu phần tử đã được tìm thấy:

let arr = [1, 2, 3, 4, 3, 5]; for (let elem of arr) { if (elem == 3) { console.log('+++'); break; // kết thúc vòng lặp } }

Bây giờ hãy thử làm sao để, nếu trong mảng hoàn toàn không có phần tử nào với giá trị 3, thì in ra '---'. Một quan niệm sai lầm phổ biến là thêm else vào câu lệnh if của chúng ta - trong trường hợp này '---' sẽ được in ra cho tất cả các phần tử không phải là 3:

let arr = [1, 2, 3, 4, 5]; for (let elem of arr) { if (elem == 3) { console.log('+++'); // sẽ in ra trên phần tử 3 } else { console.log('---'); // sẽ in ra trên các phần tử 1, 2, 4, 5 } }

Vậy, ý tưởng thêm else là một ý tưởng tồi, không hoạt động. Để giải quyết các nhiệm vụ kiểu này (các nhiệm vụ như vậy xảy ra khá thường xuyên) người ta sử dụng cái gọi là flag.

Như đã đề cập ở trên, flag là một biến như vậy, chỉ có thể mang hai giá trị: true hoặc false.

Vậy, hãy tạo biến flag với ý nghĩa như sau: nếu nó bằng true, thì trong mảng có phần tử 3, còn nếu là false, thì không có phần tử như vậy.

Ban đầu, đặt biến flag về giá trị false - nghĩa là chúng ta sẽ coi rằng phần tử 3 không có trong mảng:

let arr = [1, 2, 3, 4, 5]; let flag = false; // coi như không có phần tử 3 trong mảng

Sau đó chúng ta sẽ chạy vòng lặp với câu lệnh if như chúng ta đã làm trước đây. Nếu vòng lặp phát hiện ra rằng trong mảng có phần tử 3 - thì chúng ta sẽ đặt biến flag về giá trị true và thoát khỏi vòng lặp bằng break:

let arr = [1, 2, 3, 4, 5]; let flag = false; // coi như không có phần tử 3 trong mảng for (let elem of arr) { if (elem == 3) { flag = true; // có phần tử - định nghĩa lại biến flag break; // thoát khỏi vòng lặp } }

Câu trả lời cho câu hỏi, liệu trong mảng có 3 hay không, chúng ta chỉ có thể đưa ra sau vòng lặp. Và chúng ta đã có câu trả lời này: sau vòng lặp biến flag có thể vẫn là false hoặc có thể đã thay đổi giá trị của nó thành true, nếu vòng lặp phát hiện ra trong mảng có 3:

let arr = [1, 2, 3, 4, 5]; let flag = false; for (let elem of arr) { if (elem == 3) { flag = true; break; } } // ở đây biến flag bằng true hoặc false

Bây giờ sau vòng lặp chúng ta có thể tạo một câu lệnh if, câu lệnh này sẽ nhìn vào biến flag và in ra màn hình '+++' hoặc '---':

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('---'); }

Cho một mảng:

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

Hãy kiểm tra xem trong mảng này có phần tử 'c' hay không. Nếu có - hãy in ra '+++', còn nếu không - hãy in ra '---'.

Hãy viết mã để kiểm tra một số xem nó có phải là số nguyên tố hay không. Số nguyên tố chỉ chia hết cho một và cho chính nó, và không chia hết cho các số khác.

Tiếng Việt
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ʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối