---
tags: JS 直播班 - 2023 秋季班
---
>若有任何疑問請至 Discord「作業討論」頻道討論
# 迴圈
## 本章節我們要學什麼?
考驗同學操作迴圈的能力,讓重複的事項交給程式處理。
:::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)
:::
## 第一題:大雄罰寫
大雄上課睡覺,被斑導要求罰寫 500 次自己的名字,你是哆啦 A 夢,快救救大雄吧!
請依照以下格式打印大雄的罰寫內容使用 console.log 印出結果:
```javascript
// Todo 待編輯
function writeMyName(times) {
console.log("次數-野比大雄")
}
writeMyName(500)
// Output 輸出
// * 1-野比大雄
// * 2-野比大雄
// * 3-野比大雄
// * ...
// * 500-野比大雄
```
## 第二題:水果季節
請製作一個函式可以將物件使用以下格式回傳,並且使用 console.log 印出結果:
```javascript
// Todo 待處理
const seasonFruit = {
春天: ["梅子", "枇杷"],
夏天: ["西瓜", "桃子"],
秋天: ["火龍果", "百香果"],
冬天: ["橘子", "柳丁"]
}
function printObject(obj) {
//...
}
console.log(printObject(seasonFruit))
// Output 輸出
// "春天有梅子、枇杷
// 夏天有西瓜、桃子
// 秋天有火龍果、百香果
// 冬天有橘子、柳丁"
```
## 第三題:挑出未成年
請製作一個函式可以過濾傳入物件中未成年的名單,並使用 console.log 印出結果:
``` 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
"
```
## 第八題:蓋金字塔
請輸入金字塔的最高峰並使用 console.log 印出結果
``` javascript
// Input 輸入
pyramid(5)
// Output 輸出
"*"
"**"
"***"
"****"
"*****"
"****"
"***"
"**"
"*"
```
## 第九題:蓋房子
請製作一個函式,輸入一正整數(n)回傳一棟用文字構成的方磚屋(n*n),規則如下:
- 房子四面由「磚」構成(當 n < 3 時,只有磚)
- 房子上方正中央為「門」,不能放中間的話將門往任一邊旁邊放一格
n = 3, x門x
n = 4 -> xx門x 或 x門xx
- 替整個房子加上屋頂骨架(對角線是「骨」)
- 房子內其他剩餘空間由「空」構成
``` 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 連結貼至「回報區」回報
(也可以將答案直接貼至「回報區」)

## 作業提交等級
* LV1:解出 10 題,並提交 CodePen
* LV2:設計一個 hackmd,嘗試自己設計 5 題
* LV3:嘗試去做其他學生寫的題目,並 tag 學員回報給他,感謝他的命題,讓自己觀念更好
回報區
---
<!-- 參考答案:
https://codepen.io/jmimiding4104/pen/MWLJvZN?editors=1012
答案僅供參考,
答案會使用各種方式書寫(非最佳化)並加上部分解說,
適合初學者還不太會解題或者是該題卡住的同學。
-->
| Discord | LV1 答案 |LV2 自行設計題目 | LV3 做其他學員設計的題目 |
|:-:|:-:|:-:|:-:|
| 詹姆士 | [CodePen](https://codepen.io/z111048/pen/XWOZERx) | | |
| 銀光菇 | [CodePen](https://codepen.io/genesynthesis/pen/oNmEqwK) | | |
| Chia Pin | [CodePen](https://codepen.io/joker-cat/pen/WNPMyVo)| | |
| kuanju27 | [CodePen](https://codepen.io/Eero-Chiao/pen/wvNyjwy)| | |
| pinyi_9 | [CodePen](https://codepen.io/Wpypy/pen/ExrQLbP?editors=1111)| | |
| 精靈 | [CodePen](https://codepen.io/justafairy/pen/oNmEdOG)| | |
| 保羅 | [CodePen](https://codepen.io/paul-1997/pen/xxMYyjW)| | |
| Alyce | [CodePen](https://codepen.io/alycehwy/pen/eYxMBMv?editors=0010)| | |
| Yijing |[CodePen](https://codepen.io/Yi-Jing-71080635/pen/bGzvrZQ?editors=1111)|||
| Celine 510 |[CodePen](https://codepen.io/Celine-510/pen/vYbReRV)|||
| Ataraxia |[CodePen](https://codepen.io/ataraxia8888/pen/poGLjYK)|||
| SHUO |[CodePen](https://codepen.io/xrzarxkl-the-reactor/pen/NWoMRxa?editors=1012)|||
| dora |[CodePen](https://codepen.io/dorayu/pen/ExrQLBZ?editors=1012)|||
| 奔跑吧(GTR150) |[CodePen](https://codepen.io/Wer-Qwe/pen/BaMYvNJ?editors=1112)|||
| runweiting |[CodePen](https://codepen.io/weiting14/pen/VwgdVwX)|||
| jiayu |[CodePen](https://codepen.io/fjqxaznl-the-reactor/pen/dyajNEQ?editors=0011)|||
| xin |[CodePen](https://codepen.io/Estherrrrrr999/pen/abXqKXK)|||
| bf_tsai |[CodePen](https://codepen.io/BF-Tsai/pen/vYbVyMg?editors=1111)|||
| RX00 |[CodePen](https://codepen.io/llqzknqv-the-styleful/pen/BaMvKrK?editors=0011)|||
|celinelinnn|[CodePen](https://codepen.io/celinephoebe/pen/OJdEXmK)|||
| Uli |[CodePen](https://codepen.io/uli1313/pen/mdvLRMN)|||
| 郭芙蘭#6374 |[github](https://github.com/Florakuo1112/-Loop-practice)|||
<!--
| discord |[CodePen]()|||
-->