Bekerja dengan Flag di JavaScript
Sekarang kita akan belajar bekerja dengan flag.
Flag adalah variabel khusus yang
hanya dapat menerima dua nilai: true
dan false. Dengan menggunakan flag, kita dapat menyelesaikan
masalah yang memeriksa ketiadaan sesuatu:
contohnya, kita dapat memeriksa apakah dalam sebuah array
tidak ada elemen dengan nilai tertentu. Mari
kita mulai.
Mari kita selesaikan masalah berikut: diberikan sebuah array
berisi angka, periksa apakah di dalamnya terdapat
elemen dengan nilai 3 atau tidak. Jika
ada - tampilkan '+++', jika tidak -
tampilkan '---'.
Pertama-tama, mari kita coba menampilkan '+++'.
Untuk melakukannya, kita akan ulangi semua elemen array kita
dan dengan pernyataan if kita akan bertanya - apakah elemen saat ini
sama dengan nilai 3. Jika sama - tampilkan
'+++':
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
}
}
Tapi solusi kita tidak terlalu baik: karena jika
dalam array tidak hanya ada satu nilai 3,
tapi beberapa, maka '+++' akan ditampilkan beberapa
kali. Mari kita ubah array kita (buat
dua elemen dengan nilai 3) dan buktikan hal ini:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // akan menampilkan beberapa kali
}
}
Mari kita perbaiki masalahnya: hentikan perulangan dengan
break, jika elemen sudah ditemukan:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
break; // hentikan perulangan
}
}
Sekarang mari kita coba membuat agar,
jika dalam array sama sekali tidak ada elemen dengan nilai
3, yang ditampilkan adalah '---'. Kesalahan umum
adalah menambahkan else ke
pernyataan if kita - dalam hal ini '---' akan
ditampilkan untuk semua elemen yang bukan
3:
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // akan tampil pada elemen 3
} else {
console.log('---'); // akan tampil pada elemen 1, 2, 4, 5
}
}
Jadi, ide untuk menambahkan else adalah ide yang buruk,
tidak bekerja. Untuk menyelesaikan masalah semacam ini
(masalah seperti ini cukup sering
ditemui) digunakan yang disebut flag.
Seperti yang telah disebutkan di atas, flag adalah
variabel yang dapat menerima dua nilai:
true atau false.
Jadi, mari kita buat variabel flag
dengan makna berikut: jika nilainya true,
maka dalam array ada elemen 3, dan jika
false, maka tidak ada elemen tersebut.
Awalnya, kita set variabel flag
ke nilai false - artinya kita menganggap
bahwa elemen 3 tidak ada dalam array:
let arr = [1, 2, 3, 4, 5];
let flag = false; // menganggap elemen 3 tidak ada dalam array
Kemudian jalankan perulangan dengan pernyataan if seperti yang kita lakukan
sebelumnya. Jika perulangan menemukan bahwa dalam array
ada elemen 3 - maka set variabel flag
ke nilai true dan keluar dari perulangan
dengan break:
let arr = [1, 2, 3, 4, 5];
let flag = false; // menganggap elemen 3 tidak ada dalam array
for (let elem of arr) {
if (elem == 3) {
flag = true; // elemen ada - ubah nilai variabel flag
break; // keluar dari perulangan
}
}
Jawaban atas pertanyaan, apakah dalam array ada 3
atau tidak, hanya bisa kita berikan setelah perulangan.
Dan jawaban itu sudah kita miliki: setelah perulangan
variabel flag bisa tetap false
atau bisa berubah nilainya menjadi true,
jika perulangan mendeteksi adanya 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 variabel flag sama dengan true atau false
Sekarang setelah perulangan, kita dapat membuat pernyataan if, yang
akan melihat variabel flag dan menampilkan
'+++' atau '---' ke layar:
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('---');
}
Diberikan array:
let arr = ['a', 'b', 'c', 'd', 'e'];
Periksa apakah dalam array ini ada elemen
'c'. Jika ada - tampilkan '+++',
dan jika tidak - tampilkan '---'.
Tulis kode yang akan memeriksa apakah suatu bilangan adalah bilangan prima atau bukan. Bilangan prima hanya habis dibagi oleh satu dan oleh dirinya sendiri, dan tidak habis dibagi oleh bilangan lainnya.