--- tags: JS 直播班 - 2022 秋季班 --- ###### tags: `簡單` # 迴圈 ## 本章節我們要學什麼? 考驗同學操作迴圈的能力,讓重複的事項交給程式處理。 :::danger 在本章節中為了達成練習迴圈的目的禁止使用現成的方法如:forEach、reduce、Math.min()…… 每一題最少使用以下一種方式來解題。 * [while](https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Statements/while) * [for](https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Statements/for) * [for...in](https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Statements/for...in) * [for...of](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of) ::: :::success 可參考看看:[助教出題前筆記](https://www.webdong.dev/post/javascript-loops/),或許會對解題有幫助 😎 ::: ## 第一題:大雄罰寫 大雄上課睡覺,被斑導要求罰寫 500 次自己的名字,你是哆啦 A 夢,快救救大雄吧! 請依照以下格式打印大雄的罰寫內容在終端上: ```javascript // Todo 待編輯 function writeMyName(times) { console.log("次數-野比大雄") } writeMyName(500) // Output 輸出 // * 1-野比大雄 // * 2-野比大雄 // * 3-野比大雄 // * ... // * 500-野比大雄 ``` ## 第二題:水果季節 請製作一個函式可以將物件使用以下格式回傳,並且打印結果至終端: ```javascript // Todo 待處理 const seasonFruit = { 春天: ["梅子", "枇杷"], 夏天: ["西瓜", "桃子"], 秋天: ["火龍果", "百香果"], 冬天: ["橘子", "柳丁"] } function printObject(obj) { //... } console.log(printObject(seasonFruit)) // Output 輸出 // "春天有梅子、枇杷 // 夏天有西瓜、桃子 // 秋天有火龍果、百香果 // 冬天有橘子、柳丁" ``` ## 第三題:挑出未成年 請製作一個函式可以過濾傳入物件中未成年的名單,並打印結果至終端: ``` javascript // Todo 待處理 const group = [ { name: "小明", age: 18 }, { name: "小美", age: 7 }, { name: "小華", age: 80 } ] function filterUnder18(persons) { //... } console.log(filterUnder18(group)) // Output 輸出 [{ "name": "小美", "age": 7 }] ``` ## 第四題:反轉陣列 請製作一個函式可以回傳反轉後的陣列。 ```javascript // Todo 待處理 function reverseArray(arr) { //... } console.log(reverseArray([1,2,3,4,5])) // Output 輸出 [5,4,3,2,1] ``` ## 第五題:陣列最大值 請製作一個函式可以回傳陣列中最大的值。 ```javascript // Todo 待處理 function getMaxValue(arr) { } console.log(getMaxValue([1,5,8,2])) // Output 輸出 8 ``` ## 第六題:陣列計數 請製作一個函式可以回傳輸入陣列的項目的數量。 ```javascript // Todo 待處理 function countArray(arr) { } console.log(countArray(["A","B","A","C","D","E","E"])) // Output 輸出 { A: 2, B: 1, C: 1, D: 1, E: 2 } ``` ## 第七題:乘法表 請製作一個可以打印 a x b 大小的乘法表的函式: ```javascript // Input 輸入 console.log(tableAxB(9, 9)) // Output 輸出 " 1 * 1 = 1 1 * 2 = 2 1 * 3 = 3 1 * 4 = 4 1 * 5 = 5 1 * 6 = 6 1 * 7 = 7 1 * 8 = 8 1 * 9 = 9 // //... 省略 ... // 9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81 " ``` ## 第八題:蓋金字塔 請輸入金字塔的最高峰並打印至終端中 ``` javascript // Input 輸入 pyramid(5) // Output 輸出 "*" "**" "***" "****" "*****" "****" "***" "**" "*" ``` ## 第九題:蓋房子 請製作一個函式,輸入一正整數回傳一棟用文字構成的方磚屋,規則如下: * 房子四面由「磚」構成 * 房子上方正中央為「門」構成 * 房子邊長如無法被整除為正整數,將門往任一邊旁邊放一格 * 替整個房子加上屋頂骨架 * 房子內部由「空」構成 ``` javascript // Input 輸入 console.log(square(1)) console.log(square(2)) console.log(square(3)) console.log(square(4)) console.log(square(5)) // Output 輸出 " 磚 " " 磚磚 磚磚 " " 骨門骨 磚骨磚 骨磚骨 " " 骨磚門骨 磚骨骨磚 磚骨骨磚 骨磚磚骨 " " 骨磚門磚骨 磚骨空骨磚 磚空骨空磚 磚骨空骨磚 骨磚磚磚骨 " ``` ## 第十題:生成[費波那契](https://zh.m.wikipedia.org/zh-tw/%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0)數列 請製作一個函式可以輸入要產生多少個費撥那契數列數字,並回傳對應的費撥那契數列為陣列。 ```javascript // Todo 待處理 function generateFibonacci(max) { } console.log(generateFibonacci(5)) // Ouput 輸出 [0,1,1,2,3] ``` ## 回報流程 1. 將答案貼在 Codepen 並複製 Codepen 連結貼至「回報區」回報 (也可以將答案直接貼至「回報區」) ![](https://i.imgur.com/vftL5i0.png) ## 作業提交等級 * LV1:解出 10 題,並提交 CodePen * LV2:設計一個 hackmd,嘗試自己設計 5 題 * LV3:嘗試去做其他學生寫的題目,並 tag 學員回報給他,感謝他的命題,讓自己觀念更好 回報區 --- :::warning 本次作業邏輯更為複雜,如有疑問歡迎到 [第七週刷題任務 - 迴圈](https://discord.com/channels/801807326054055996/1041517826042761336) 中發問,助教會上去解惑~ ::: | Discord | LV | CodePen / 答案 | |:-----------------------:|:---:|:--------------------------------------------------------------------------------:| | Rice#8043 | LV1 | [CodePen](https://codepen.io/riecball/pen/gOKMNeM?editors=0111) | | hsiung阿熊#4079 | LV1 | [CodePen](https://codepen.io/hsiungchi/pen/jOKwMBW) | |RJRS#9430|LV1|[CodePen](https://codepen.io/RJRS/pen/qBKjarY)| |yawun#0042|LV1|[CodePen](https://codepen.io/monicalin/pen/wvXeope)| |JackC#0411|LV1|[CodePen](https://codepen.io/key0329/pen/eYKRdXy)| |心幻羽#0056|LV1|[CodePen](https://codepen.io/linglingsyu/pen/JjZJWQe?editors=1111)| |圈圈#4060|LV1|[Codepen](https://codepen.io/wjejfczn-the-bold/pen/bGKRwad?editors=1111)| |柔柔#1716|LV1|[Codepen](https://codepen.io/rouchen/pen/ZERyJRy?editors=0011) |hannahTW#2224|LV1|[Codepen](https://codepen.io/hangineer/pen/VwdWWwm?editors=1112) |無名#6427|LV1|[Codepen](https://codepen.io/Nomoney/pen/oNywYKx) |jimmyFang#9575|LV1|[Codepen](https://codepen.io/pohxiqqo/pen/GRGEXmz?editors=0011) |albee#9121|LV1|[Codepen](https://codepen.io/albee-chang/pen/PoajQOb?editors=1012)| | m_m#5493 | LV1 | [CodePen](https://codepen.io/minnn7716/pen/BaVZWwB) | |azami#5986|LV1|[Codepen](https://codepen.io/azami/pen/vYrZqEy)| |kuku#3118|LV1|[Codepen](https://codepen.io/mengting-ku/pen/YzvxXxK) |mandylai#4055|LV1|[Codepen](https://codepen.io/mandy-lai-2/pen/NWzgbMw) |kenki100#0068|LV1|[Codepen](https://codepen.io/ken100/pen/MWXovej)| |出事了阿伯#9923|LV1|[Codepen](https://codepen.io/BradpittLai/pen/gOKxwVY?editors=1010)| |Amberhh#2465|LV1|[Codepen](https://codepen.io/Amberhh/pen/zYadGJe) | |Sentiments#4883|lv1|[codepen](https://codepen.io/Sentiments/pen/GRGMZKL?editors=1010) |KuoMin#4931|lv1|[codepen](https://codepen.io/KuoMin/pen/qBKPNQZ) |Vera#5592|LV1|[CodePen](https://codepen.io/skvera/pen/eYKevoZ) |PayRoom#8328|LV1|[CodePen](https://codepen.io/water38198/pen/abKyXWj) |Kevin#6131|LV1|[CodePen](https://codepen.io/xlqjezvc-the-encoder/pen/xxzXjWd?editors=1011) |WEI_RIO#9342|LV1|[Codepen](https://codepen.io/wei_wu/pen/eYKRdwV?editors=1011)|htClara#1275n.io/bsupixqu/pen/vYrJJez |SASIMI#5099|LV1|[Codepen](https://codepen.io/sashimi1327/pen/LYrQdWJ)| |三隻小貓#1905|LV1|[CodePen](https://codepen.io/bagelover/pen/LYreyGz?editors=0111)| |Paul#7426|LV1|[CodePen](https://codepen.io/paul-1997/pen/MWXrMGQ?editors=0011)| |charlottelee849#0366|LV1|[CodePen](https://codepen.io/char849/pen/poKOLyO?editors=0012)| |Kimi#9564|LV1|[CodePen](https://codepen.io/kimihu91/pen/abKMwjG)| |軟綿綿 (๑•ᴗ•๑) ♡#3627|LV1|[CodePen](https://codepen.io/Connie-Chien/pen/wvXOWKV?editors=0012)| |Lucie#3831|LV1|[Codepen](https://codepen.io/bisespei/pen/XWYOmeq)| |蓁心#6229|LV1|[Codepen](https://codepen.io/tlorfrnl-the-typescripter/pen/yLqapXe?editors=0011)|