JavaScript
Control Flow
Workshop: Control Flow
ฝึกใช้ if / else, ternary operator และ switch ร่วมกันผ่านโจทย์ playground โดยใช้เฉพาะความรู้ก่อนหน้าและบท Control Flow ที่เรียนมาแล้ว
Workshop 1: เลือกสถานะคำสั่งซื้อ
เป้าหมาย: ทบทวนการเรียงเงื่อนไข if / else if / else ในสถานการณ์สั่งซื้อจริง มีให้แล้ว: `isPaid = true`, `stockStatus = "available"`, `orderTotal = 680` สิ่งที่ต้องทำ: กำหนดค่า `orderStatus` ให้ตรงกับลำดับความสำคัญของเงื่อนไข ผลที่ควรเห็น: output แสดง "พร้อมส่งฟรี"
Workshop 2: เลือกค่าจัดส่งด้วย ternary
เป้าหมาย: ทบทวน ternary กับโจทย์ที่มีผลลัพธ์แค่สองทาง มีให้แล้ว: `cartTotal = 420` สิ่งที่ต้องทำ: สร้าง `shippingFee` จากเกณฑ์ยอดซื้อ ผลที่ควรเห็น: output แสดง 45
Workshop 3: แปลงรหัสสถานะด้วย switch
เป้าหมาย: ทบทวน switch เมื่อมี code หนึ่งค่าที่ต้องจับคู่กับหลายข้อความ มีให้แล้ว: `statusCode = "review"` และตัวแปร `statusText` สิ่งที่ต้องทำ: เขียน case ให้ครอบคลุมทุกสถานะหลักและมี default ผลที่ควรเห็น: output แสดง "รอตรวจ"
Workshop 4: รวมเงื่อนไขหลายแบบในงานเดียว
เป้าหมาย: ฝึกเลือกเครื่องมือ control flow ให้เหมาะกับงานแต่ละส่วนในโจทย์เดียว มีให้แล้ว: `memberLevel = "gold"`, `cartTotal = 720`, `isAddressReady = true` สิ่งที่ต้องทำ: ใช้ switch, ternary และ if / else แยกกันตามหน้าที่ของแต่ละตัวแปร ผลที่ควรเห็น: ได้ memberLabel = "สมาชิก Gold", discountRate = 0.1 และ checkoutStatus = "พร้อมชำระเงิน"
Workshop 5: เลือกระดับความเร่งด่วน
เป้าหมาย: ทบทวนการเรียงช่วงคะแนนจากสูงไปต่ำด้วย else if มีให้แล้ว: `urgencyScore = 82` และตัวแปร `urgencyLabel` สิ่งที่ต้องทำ: กำหนดระดับความเร่งด่วนให้ตรงกับช่วงคะแนน ผลที่ควรเห็น: output แสดง "เร่งด่วน"
Workshop 6: เลือกข้อความส่วนลดด้วย ternary
เป้าหมาย: ทบทวน ternary กับข้อความสั้น ๆ ที่มีคำตอบสองแบบ มีให้แล้ว: `discountRate = 0.15` สิ่งที่ต้องทำ: สร้าง `discountMessage` ให้บอกว่ามีส่วนลดหรือไม่ ผลที่ควรเห็น: output แสดง "มีส่วนลด"
Workshop 7: แปลง code ช่องทางติดต่อด้วย switch
เป้าหมาย: ทบทวน switch สำหรับงานแปลง code สั้นให้เป็นข้อความที่คนอ่านเข้าใจง่าย มีให้แล้ว: `channelCode = "chat"` และตัวแปร `channelLabel` สิ่งที่ต้องทำ: เขียน case สำหรับ email, chat, phone และมี default ผลที่ควรเห็น: output แสดง "แชตสด"
Workshop 8: ตรวจสิทธิ์เข้าเรียน
เป้าหมาย: ทบทวนการใช้ if / else กับ logical operators ในเงื่อนไขสิทธิ์เข้าใช้งาน มีให้แล้ว: `isLoggedIn = true`, `hasActivePlan = false`, `hasTrial = true` สิ่งที่ต้องทำ: เช็กการ login ก่อน แล้วค่อยดูว่าเข้าเรียนได้จากแพ็กเกจหรือช่วงทดลองใช้ ผลที่ควรเห็น: output แสดง "เข้าเรียนได้"
Workshop 9: เลือก badge คะแนน
เป้าหมาย: ทบทวนการเรียงช่วงคะแนนให้ถูกลำดับก่อนกำหนด badge มีให้แล้ว: `score = 74` และตัวแปร `badge` สิ่งที่ต้องทำ: ใช้ if / else if / else เลือก badge จากช่วงคะแนน ผลที่ควรเห็น: output แสดง "ผ่าน"
Workshop 10: เลือกค่าธรรมเนียมตามยอดซื้อ
เป้าหมาย: ทบทวน ternary กับการเลือกค่าตัวเลขจากเงื่อนไขเดียว มีให้แล้ว: `subtotal = 1200` สิ่งที่ต้องทำ: สร้าง `serviceFee` จากเกณฑ์ยอดซื้อ ผลที่ควรเห็น: output แสดง 0
Workshop 11: แปลง payment method ด้วย switch
เป้าหมาย: ทบทวน switch สำหรับแปลง code วิธีชำระเงินให้เป็นข้อความ มีให้แล้ว: `paymentMethod = "bank"` และตัวแปร `paymentLabel` สิ่งที่ต้องทำ: เขียน case สำหรับ card, bank, wallet และมี default ผลที่ควรเห็น: output แสดง "โอนผ่านธนาคาร"
Workshop 12: ตรวจสถานะฟอร์ม
เป้าหมาย: ทบทวนการเช็กเงื่อนไขทีละข้อก่อนส่งฟอร์ม มีให้แล้ว: `hasName = true`, `hasEmail = true`, `acceptedTerms = false` สิ่งที่ต้องทำ: ใช้ if / else if / else ไล่เช็กข้อมูลที่จำเป็นตามลำดับ ผลที่ควรเห็น: output แสดง "ยอมรับเงื่อนไขก่อน"
Workshop 13: เลือกข้อความ stock ด้วย ternary
เป้าหมาย: ทบทวน ternary กับข้อความจากจำนวนสินค้าที่เหลือ มีให้แล้ว: `stockCount = 0` สิ่งที่ต้องทำ: สร้าง `stockMessage` ให้บอกว่ามีสินค้าเหลือหรือไม่ ผลที่ควรเห็น: output แสดง "สินค้าหมด"
Workshop 14: แปลง priority code ด้วย switch
เป้าหมาย: ทบทวน switch สำหรับแปลง code ลำดับความสำคัญให้เป็นข้อความ มีให้แล้ว: `priorityCode = "P2"` และตัวแปร `priorityText` สิ่งที่ต้องทำ: เขียน case สำหรับ P1, P2, P3 และมี default ผลที่ควรเห็น: output แสดง "สูง"
Workshop 15: สรุปรายการด้วยหลายเงื่อนไข
เป้าหมาย: ปิดท้ายด้วยโจทย์ผสมที่ต้องใช้ switch, ternary และ if / else ให้ถูกจุด มีให้แล้ว: `deliveryCode = "express"`, `subtotal = 860`, `isPaid = true` สิ่งที่ต้องทำ: สร้างข้อความการส่ง ของแถม และสถานะคำสั่งซื้อจากคนละเงื่อนไข ผลที่ควรเห็น: ได้ deliveryLabel = "ส่งด่วน", giftMessage = "ได้ของแถม" และ orderMessage = "เตรียมจัดส่ง"