Try   HackMD

利用 switch + .sort()重新製作排序資料

switch

switch 後的小括號內會帶入一個表達式,並透過表達式的值去比對底下 case 後帶入的值是否符合該表達式回傳的值,符合的情況就會去執行 case 底下的陳述式,而每個 case 執行完後必須帶入 break ,才能終止程式碼繼續往下一個 case 執行

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 掃過一遍才會執行裡面

ifelse 和 switch 的差異?

if…else 會將所有的條件跟內容審視過一次,但如果是 switch 時,當他的條件是裡面的其中一個case 時,再執行裡面的程式碼,所以相對來說效能比較好。

所以 switch 適合用在已經確定是哪些狀態。

.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 前面。

    所以,比較函式會是以下形式:

    ​​​​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];