You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web-Dev-For-Beginners/translations/th/2-js-basics/4-arrays-loops/assignment.md

122 lines
10 KiB

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "8abcada0534e0fb3a7556ea3c5a2a8a4",
"translation_date": "2025-10-23T20:44:41+00:00",
"source_file": "2-js-basics/4-arrays-loops/assignment.md",
"language_code": "th"
}
-->
# การบ้านเรื่องอาร์เรย์และลูป
## คำแนะนำ
ทำแบบฝึกหัดต่อไปนี้เพื่อฝึกการใช้งานอาร์เรย์และลูป แต่ละแบบฝึกหัดจะต่อยอดจากแนวคิดในบทเรียนและกระตุ้นให้คุณใช้ลูปประเภทต่างๆ และเมธอดของอาร์เรย์
### แบบฝึกหัดที่ 1: โปรแกรมสร้างรูปแบบตัวเลข
สร้างโปรแกรมที่แสดงตัวเลขทุกๆ 3 ตัวระหว่าง 1-20 และพิมพ์ลงในคอนโซล
**ข้อกำหนด:**
- ใช้ `for` loop พร้อมการเพิ่มค่าที่กำหนดเอง
- แสดงตัวเลขในรูปแบบที่เข้าใจง่าย
- เพิ่มคำอธิบายที่ชัดเจนในโค้ดของคุณ
**ผลลัพธ์ที่คาดหวัง:**
```
3, 6, 9, 12, 15, 18
```
> **เคล็ดลับ:** ปรับการแสดงผลใน `for` loop ของคุณเพื่อข้ามตัวเลข
### แบบฝึกหัดที่ 2: การวิเคราะห์อาร์เรย์
สร้างอาร์เรย์ที่มีตัวเลขอย่างน้อย 8 ตัว และเขียนฟังก์ชันเพื่อวิเคราะห์ข้อมูล
**ข้อกำหนด:**
- สร้างอาร์เรย์ชื่อ `numbers` ที่มีค่าอย่างน้อย 8 ค่า
- เขียนฟังก์ชัน `findMaximum()` เพื่อคืนค่าตัวเลขที่มากที่สุด
- เขียนฟังก์ชัน `findMinimum()` เพื่อคืนค่าตัวเลขที่น้อยที่สุด
- เขียนฟังก์ชัน `calculateSum()` เพื่อคืนค่าผลรวมของตัวเลขทั้งหมด
- ทดสอบแต่ละฟังก์ชันและแสดงผลลัพธ์
**ความท้าทายเพิ่มเติม:** สร้างฟังก์ชันที่ค้นหาตัวเลขที่มากที่สุดอันดับสองในอาร์เรย์
### แบบฝึกหัดที่ 3: การประมวลผลอาร์เรย์ของสตริง
สร้างอาร์เรย์ของภาพยนตร์/หนังสือ/เพลงที่คุณชื่นชอบ และฝึกการใช้ลูปประเภทต่างๆ
**ข้อกำหนด:**
- สร้างอาร์เรย์ที่มีค่าเป็นสตริงอย่างน้อย 5 ค่า
- ใช้ `for` loop แบบดั้งเดิมเพื่อแสดงรายการพร้อมตัวเลข (1. ชื่อรายการ)
- ใช้ `for...of` loop เพื่อแสดงรายการในตัวพิมพ์ใหญ่
- ใช้เมธอด `forEach()` เพื่อคำนวณและแสดงจำนวนตัวอักษรรวมทั้งหมด
**ตัวอย่างผลลัพธ์:**
```
Traditional for loop:
1. The Matrix
2. Inception
3. Interstellar
For...of loop (uppercase):
THE MATRIX
INCEPTION
INTERSTELLAR
Character count:
Total characters across all titles: 42
```
### แบบฝึกหัดที่ 4: การกรองข้อมูล (ขั้นสูง)
สร้างโปรแกรมที่ประมวลผลอาร์เรย์ของออบเจ็กต์ที่แสดงถึงนักเรียน
**ข้อกำหนด:**
- สร้างอาร์เรย์ที่มีออบเจ็กต์นักเรียนอย่างน้อย 5 ตัว โดยมีคุณสมบัติ: `name`, `age`, `grade`
- ใช้ลูปเพื่อค้นหานักเรียนที่มีอายุ 18 ปีขึ้นไป
- คำนวณค่าเฉลี่ยของเกรดนักเรียนทั้งหมด
- สร้างอาร์เรย์ใหม่ที่มีเฉพาะนักเรียนที่มีเกรดมากกว่า 85
**โครงสร้างตัวอย่าง:**
```javascript
const students = [
{ name: "Alice", age: 17, grade: 92 },
{ name: "Bob", age: 18, grade: 84 },
// Add more students...
];
```
## การทดสอบโค้ดของคุณ
ทดสอบโปรแกรมของคุณโดย:
1. รันแต่ละแบบฝึกหัดในคอนโซลของเบราว์เซอร์
2. ตรวจสอบผลลัพธ์ให้ตรงกับที่คาดหวัง
3. ทดสอบด้วยชุดข้อมูลที่แตกต่างกัน
4. ตรวจสอบว่าโค้ดของคุณสามารถจัดการกรณีขอบ (อาร์เรย์ว่าง, องค์ประกอบเดียว) ได้
## แนวทางการส่งงาน
รวมสิ่งต่อไปนี้ในงานที่คุณส่ง:
- โค้ด JavaScript ที่มีคำอธิบายอย่างดีสำหรับแต่ละแบบฝึกหัด
- ภาพหน้าจอหรือผลลัพธ์ข้อความที่แสดงโปรแกรมของคุณทำงาน
- คำอธิบายสั้นๆ ว่าคุณเลือกใช้ลูปประเภทใดสำหรับแต่ละงานและเหตุผล
## เกณฑ์การให้คะแนน
| เกณฑ์ | ดีเยี่ยม (3 คะแนน) | พอใช้ (2 คะแนน) | ต้องปรับปรุง (1 คะแนน) |
| -------- | -------------------- | ------------------- | --------------------------- |
| **การทำงาน** | ทำแบบฝึกหัดทั้งหมดได้ถูกต้องรวมถึงความท้าทายเพิ่มเติม | แบบฝึกหัดที่จำเป็นทำงานได้ถูกต้อง | แบบฝึกหัดบางส่วนไม่สมบูรณ์หรือมีข้อผิดพลาด |
| **คุณภาพของโค้ด** | โค้ดสะอาดและจัดระเบียบดี พร้อมชื่อตัวแปรที่อธิบายได้ | โค้ดทำงานได้แต่ยังไม่สะอาด | โค้ดไม่เป็นระเบียบหรือเข้าใจยาก |
| **คำอธิบาย** | มีคำอธิบายที่ครอบคลุมเกี่ยวกับตรรกะและการตัดสินใจ | มีคำอธิบายพื้นฐาน | มีคำอธิบายน้อยหรือไม่มีเลย |
| **การใช้ลูป** | แสดงความเข้าใจในการใช้ลูปประเภทต่างๆ อย่างเหมาะสม | ใช้ลูปได้ถูกต้องแต่มีความหลากหลายจำกัด | ใช้ลูปผิดหรือไม่มีประสิทธิภาพ |
| **การทดสอบ** | มีหลักฐานการทดสอบอย่างละเอียดด้วยสถานการณ์ต่างๆ | แสดงการทดสอบพื้นฐาน | มีหลักฐานการทดสอบน้อยหรือไม่มีเลย |
## คำถามสะท้อนความคิด
หลังจากทำแบบฝึกหัดเสร็จ ลองพิจารณา:
1. ลูปประเภทใดที่รู้สึกว่าใช้ง่ายที่สุด และเพราะอะไร?
2. คุณพบความท้าทายอะไรบ้างเมื่อทำงานกับอาร์เรย์?
3. ทักษะเหล่านี้สามารถนำไปใช้กับโครงการพัฒนาเว็บในโลกจริงได้อย่างไร?
4. คุณจะทำอะไรแตกต่างออกไปหากต้องปรับปรุงโค้ดให้มีประสิทธิภาพมากขึ้น?
---
**ข้อจำกัดความรับผิดชอบ**:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้