###### tags: `JavaScript`
# JS Class 2 0821
## :memo: 模組6. 流程控制
### 6-1. 何謂流程控制
有關聯/因果性的再用if else if,否則單選判斷用switch即可

### 6-2. if else 選擇結構
if else:非A即B
### 6-3. switch case 選擇結構
時間複雜度,編譯器會最佳化演算法,以達成較快的速度
資料結構:走訪、遍歷、尋訪
二元樹裏的資料其實不一定是依照大小或從左到右排序的,可能依照輸出的方式不同,結果也會不盡相同。
目前理論上有四種輸出順序:
前序遍歷 (Preorder Traversal)
中序遍歷 (Inorder Traversal)
後序遍歷 (Postorder Traversal)
層序遍歷 (Level-order Traversal)


---
## :memo: 模組7. 重複流程結構
### 7-1. 重複結構設計要領
***變因寫在break、continue前***
c#練習:將陣列[1,3,5,7,9]加為[6,8,10,12,14]印出
```
private void button2_Click(object sender, EventArgs e)
{
int[] x = { 1, 3, 5, 7, 9 };
Plus(x);
foreach(int i in x)
{
Console.WriteLine(i);
}
}
public int[] Plus(int[] arr)
{
for (int i =0;i <arr.Length;i++)
{
arr[i] += 5;
}
return arr;
}
```
### 7-2. while 迴圈
### 7-3. do while迴圈
---
## :memo: 模組8. for迴圈與進階控制
### 8-1. for迴圈語法與流程
每次迴圈結束要改變誘因/變數
```
ex:var x =0
while(x<5){
console.log(x);
x++;
if(x==2)
{continue;}
}
略過2印出
```
### 8-2. 巢狀迴圈
```
var x = [45,6,465,21,354,498,432,12,312,121231,123,123,321]
var n = new Set();
for (i=0;i<x.length;i++){
n.add(x[i]);
}
```
///將重複值移除///
### 8-3. break continue 語法
---
## :memo: 模組9. 陣列
### 9-1. 陣列宣告與初始化
方法也是物件
陣列可隨時改變長度,不用new/預先給大小
陣列建議寫法:

### 9-2. 陣列操作
二維陣列第幾個陣列第幾個參數:

### 9-3. 陣列常用屬性與方法
()小括號是執行的意思

練習:設一個函式可以新增[1,2,3,4,5]的陣列形式
```
function name() {
var arr = []
for(i=1;i<6;i++){
arr.push(i);
}
return arr;
}
```
合併陣列並排序

---
## :memo: 模組10. 函式
### 10-1. 函式宣告與初始化
練習:設計一個函式(如果為原住民,分數+10分。分數90分以上為S並印出,80以上為A....)
```
function getscore(score,native){
if(score<91 && native){
score +=10
}
var show = "";
switch(parseInt(score/10)){
case 10:
case 9:
show="S";
break;
case 8:
show="B";
break;
case 7 :
show="C";
break;
case 6:
show="D";
break;
default:
console.log("FAILED");
}return show;
}
```
///即便超過100也顯示S///
### 10-2. 函式使用

2種函式定義方式依個人習慣使用