# 陣列與迴圈練習 ## 指示 完成以下練習以練習使用陣列和迴圈。每個練習以課程中的概念為基礎,並鼓勵你應用不同的迴圈類型和陣列方法。 ### 練習 1:數字模式生成器 建立一個程式,列出 1 到 20 之間每隔 3 個的數字並輸出到控制台。 **需求:** - 使用帶有自訂遞增值的 `for` 迴圈 - 以使用者友善的格式顯示數字 - 加上描述性註解說明你的邏輯 **預期輸出:** ``` 3, 6, 9, 12, 15, 18 ``` > **提示:** 修改 for 迴圈中的迭代表達式以跳過數字。 ### 練習 2:陣列分析 建立一個至少包含 8 個不同數字的陣列,並撰寫函式來分析資料。 **需求:** - 建立一個名為 `numbers` 的陣列,包含至少 8 個值 - 撰寫函式 `findMaximum()` 回傳最高數字 - 撰寫函式 `findMinimum()` 回傳最低數字 - 撰寫函式 `calculateSum()` 回傳所有數字的總和 - 測試每個函式並顯示結果 **額外挑戰:** 建立一個函式找出陣列中的第二高數字。 ### 練習 3:字串陣列處理 建立你最喜愛的電影/書籍/歌曲陣列,練習不同迴圈類型。 **需求:** - 建立一個含有至少 5 個字串值的陣列 - 使用傳統的 `for` 迴圈以編號格式顯示項目(1. 項目名稱) - 使用 `for...of` 迴圈以大寫顯示項目 - 使用 `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 }, // 新增更多學生... ]; ``` ## 測試你的程式 測試方式: 1. 在瀏覽器控制台執行每個練習 2. 確認輸出與預期結果相符 3. 使用不同資料集測試 4. 確認程式能處理邊界情況(空陣列、單一元素) ## 提交規範 請包含以下內容: - 每個練習皆附有良好註解的 JavaScript 程式碼 - 顯示程式執行畫面截圖或文字輸出 - 簡述你為何在每項任務選擇該類型迴圈 ## 評分標準 | 評分標準 | 優異 (3 分) | 尚可 (2 分) | 需改進 (1 分) | | -------- | ----------- | ---------- | -------------- | | **功能性** | 完成所有練習且包含額外挑戰 | 完成所有必要練習並且正確 | 部分練習未完成或有錯誤 | | **程式碼品質** | 程式碼乾淨且結構良好,變數命名具描述性 | 程式碼能運作但可更精簡 | 程式碼混亂或難以理解 | | **註解** | 詳盡註解,說明邏輯與決策 | 有基本註解 | 註解非常少或沒有註解 | | **迴圈使用** | 適當使用多種迴圈類型以展示理解 | 迴圈使用正確但種類有限 | 迴圈使用不當或效率差 | | **測試** | 有多種情境的完整測試證據 | 有基本測試證據 | 幾乎沒有測試證據 | ## 反思問題 完成練習後,請思考: 1. 你覺得哪種迴圈最自然且為什麼? 2. 使用陣列時遇到哪些挑戰? 3. 這些技能如何應用於真實世界的網頁開發專案? 4. 若要優化效能,你會怎麼調整程式碼? --- **免責聲明**: 本文件由 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 所翻譯。儘管我們致力於確保準確性,但請注意,自動翻譯可能存在錯誤或不準確之處。原始文件的母語版本應視為權威來源。對於重要資訊,建議使用專業人工翻譯。我們不對因使用本翻譯而引起的任何誤解或誤釋承擔責任。