Pengendalian Flag dalam JavaScript
Sekarang kita akan belajar mengendalikan flag.
Flag ialah pembolehubah khas, yang
hanya boleh menerima dua nilai: true
dan false. Dengan menggunakan flag, kita boleh menyelesaikan
masalah yang menyemak ketiadaan sesuatu:
contohnya, kita boleh menyemak sama ada dalam array
tiada elemen dengan nilai tertentu. Mari
kita mulakan.
Mari selesaikan masalah berikut: diberi array
dengan nombor, perlu disemak sama ada ia mengandungi
elemen dengan nilai 3 atau tidak. Jika
ada - paparkan '+++', jika tidak -
paparkan '---'.
Sebagai permulaan, mari cuba paparkan '+++'.
Untuk itu, kita akan ulangi semua elemen array kita
dan dengan *if* akan bertanya - adakah elemen semasa
sama dengan nilai 3. Jika sama - paparkan
'+++':
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
}
}
Tetapi penyelesaian kita tidak begitu baik: kerana jika
dalam array bukan hanya satu nilai 3,
tetapi beberapa, maka '+++' akan dipaparkan beberapa
kali. Mari betulkan array kita (buat
dua elemen dengan nilai 3) dan pastikannya:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // akan memaparkan beberapa kali
}
}
Mari betulkan masalah: hentikan gelung dengan
break, jika elemen sudah ditemui:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
break; // hentikan gelung
}
}
Sekarang mari cuba buat supaya,
jika dalam array langsung tiada elemen dengan nilai
3, dipaparkan '---'. Kesilapan biasa
ialah menambah else kepada
*if* kita - dalam kes ini '---' akan
dipaparkan untuk semua elemen yang bukan
3:
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // akan dipaparkan pada elemen 3
} else {
console.log('---'); // akan dipaparkan pada elemen 1, 2, 4, 5
}
}
Jadi, idea untuk menambah else - adalah idea yang
tidak baik, tidak berfungsi. Untuk menyelesaikan masalah jenis ini
(masalah seperti ini berlaku agak
kerap) yang dipanggil flag digunakan.
Seperti yang disebut di atas, flag ialah
pembolehubah sedemikian, yang boleh menerima dua nilai:
true atau false.
Jadi, mari buat pembolehubah flag
dengan nilai sedemikian: jika ia sama dengan true,
maka dalam array ada elemen 3, dan jika
false, maka tiada elemen sedemikian.
Pada mulanya, letakkan pembolehubah flag
kepada nilai false - iaitu kita akan menganggap
bahawa elemen 3 tiada dalam array:
let arr = [1, 2, 3, 4, 5];
let flag = false; // kami anggap tiada elemen 3 dalam array
Kemudian jalankan gelung dengan *if* seperti yang kita lakukan
sebelum ini. Jika gelung mengesan bahawa dalam array
ada elemen 3 - maka letakkan pembolehubah flag
kepada nilai true dan keluar dari gelung
dengan break:
let arr = [1, 2, 3, 4, 5];
let flag = false; // kami anggap tiada elemen 3 dalam array
for (let elem of arr) {
if (elem == 3) {
flag = true; // elemen ada - takrif semula pembolehubah flag
break; // keluar dari gelung
}
}
Jawapan kepada soalan, adakah dalam array 3
atau tidak, kita hanya boleh berikan selepas gelung.
Dan jawapan ini sudah kita ada: selepas gelung
pembolehubah flag mungkin kekal false
atau mungkin telah menukar nilainya kepada true,
jika gelung mengesan 3 dalam array:
let arr = [1, 2, 3, 4, 5];
let flag = false;
for (let elem of arr) {
if (elem == 3) {
flag = true;
break;
}
}
// di sini pembolehubah flag sama dengan true atau false
Sekarang selepas gelung, kita boleh buat *if*, yang
akan melihat pembolehubah flag dan memaparkan
pada skrin '+++' atau '---':
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('---');
}
Diberi array:
let arr = ['a', 'b', 'c', 'd', 'e'];
Semak, sama ada dalam array ini ada elemen
'c'. Jika ada - paparkan '+++',
dan jika tidak - paparkan '---'.
Tulis kod yang akan menyemak sama ada nombor itu perdana atau tidak. Nombor perdana hanya boleh dibahagi dengan satu dan dengan dirinya sendiri, dan tidak boleh dibahagi dengan nombor lain.