# 利用 switch + .sort()重新製作排序資料 ## switch switch 後的小括號內會帶入一個`表達式`,並透過表達式的值去比對底下 case 後帶入的值是否符合該表達式回傳的值,符合的情況就會去執行 case 底下的`陳述式`,而每個 case 執行完後必須帶入 break ,才能終止程式碼繼續往下一個 case 執行 JavaScript 範例如下: ```javascript= switch (expression) { case value1: //當 expression 的值符合 value1 //要執行的陳述句 break; case value2: //當 expression 的值符合 value2 //要執行的陳述句 break; case valueN: //當 expression 的值符合 valueN //要執行的陳述句 break; default: //當 expression 的值都不符合上述條件 //要執行的陳述句 break; } ``` - 起手 - `switch(參數){ ... }` 中的中括號要帶入參數去做比對 - 符合條件 case: - - switch 中的條件 `case 條件內容:` case 結尾加冒號 - 條件後面接陳述內容,寫完下一行後面一定要加 break 跳出 - 條件之外 default: - `default:` 如果都沒有上述條件的話,會出現的描述。 default 是加冒號,同樣也要加 `break;` - `default` 不一定要放在最後,放在中間也可以,反正 switch 會將所有 case 掃過一遍才會執行裡面 ### if...else 和 switch 的差異? `if…else` 會將所有的條件跟內容審視過一次,但如果是 `switch` 時,當他的條件是裡面的其中一個case 時,再執行裡面的程式碼,所以相對來說效能比較好。 所以 `switch` 適合用在已經確定是哪些狀態。 ## .sort() 陣列方法 [陣列的各種操作方法](https://hackmd.io/@unayojanni/HyzWz9R0u/%2F%40unayojanni%2FryUNVTPyt#➤-sort) #### 複習一下 1. `.sort()` 是以字串,重新排列陣列中的元素,並返回原本的陣列,所以會更改原始陣列。(如果要針對數字排序,就要帶 function) 2. 自訂義排序: `sort()` 可帶入 compareFunction 參數,且會根據函式內帶入參數比較結果,進行排序。 - 如果使用 compareFunction 參數,並定義該函式內有參數 a 和 b 為被**比較**之兩元素,則: - 若 `a - b` < 0, a 排在 b 前面。 - 若 `a - b` = 0,則 a 與 b 皆不會改變彼此的順序,但會與其他全部的元素比較來排序。 - 若 `a - b` > 0 ,則 b 排在 a 前面。 所以,比較函式會是以下形式: ```javascript= let arr = [5, 2, 3, 4, 1, 7, 20, 10, 90, 6]; //compareFunction arr.sort(function (a, b) { return a - b; }); // arr = [1, 2, 3, 4, 5, 6, 7, 10, 20, 90]; ```