การทำงานกับแฟล็กใน 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 เลย ให้แสดง '---' ความเข้าใจผิดทั่วไป
คือการเพิ่ม else ลงใน
if ของเรา - ในกรณีนี้ '---' จะ
แสดงสำหรับทุกองค์ประกอบที่ไม่ใช่
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' หรือไม่ หากมี - ให้แสดง '+++'
แต่ถ้าไม่มี - ให้แสดง '---'
เขียนโค้ดที่จะตรวจสอบ ตัวเลขว่ามันเป็นจำนวนเฉพาะหรือไม่ จำนวนเฉพาะหารด้วยตัวมันเองและหนึ่งเท่านั้น และไม่หารด้วยตัวเลขอื่นๆ