Try   HackMD

Array.sort() 陣列排序

Array.sort() 是 JavaScript 數組對象的方法,用於對數組中的元素進行排序。它可以根據默認的排序規則或自定義排序函數來排序數組的元素。 Array.sort() 在原地排序數組,也就是說它會直接修改原始數組,而不會創建新的數組。

使用方式

array.sort([compareFunction])
const numbers = [3, 1, 5, 2, 4];
numbers.sort(); // 默認排序,按字符的 Unicode 順序排序
console.log(numbers); // 輸出 [1, 2, 3, 4, 5]

const fruits = ['apple', 'banana', 'cherry', 'date'];
fruits.sort(); // 默認排序,按字符的 Unicode 順序排序
console.log(fruits); // 輸出 ["apple", "banana", "cherry", "date"]

const descendingOrder = numbers.sort((a, b) => b - a); // 自定義降序排序
console.log(descendingOrder); // 輸出 [5, 4, 3, 2, 1]
  • compareFunction 比較函式(可選):是一個可選的函數,用於指定排序的規則。如果省略此參數,Array.sort() 將默認使用字符串排序規則,即按照字符的 Unicode 順序對元素進行排序。

補充 - compareFunction 比較函式

比較函數是一個函數,接受兩個參數(通常命名為 ab),並返回一個數字,該數字決定了這兩個參數的相對順序。

const numbers = [3, 1, 5, 2, 4];

// 升序排序
const ascendingOrder = numbers.sort((a, b) => a - b);
console.log(ascendingOrder); // 輸出 [1, 2, 3, 4, 5]

// 降序排序
const descendingOrder = numbers.sort((a, b) => b - a);
console.log(descendingOrder); // 輸出 [5, 4, 3, 2, 1]

以下是關於比較函數的重要概念:

  1. 返回值規則:比較函數必須返回一個數字,該數字可正可負可零,具體表示如下:

    • 如果返回負數,意味著 a 應該在 b 之前,即 a 排在 b 的前面。
    • 如果返回零,意味著 ab 位置相對不變,它們相等。
    • 如果返回正數,意味著 b 應該在 a 之前,即 b 排在 a 的前面。
  2. 排序用途:比較函數通常與數組的 .sort() 方法一起使用,用於確定數組中元素的排序順序。 .sort() 方法會調用比較函數來決定元素的相對位置。

  3. 升序排序:要實現升序排序,比較函數應返回 a - b,其中 ab 是要比較的元素。如果a 大於b,則返回正數,a 排在b 的後面;如果a 小於b,則返回負數,a 排在b 的前面;如果它們相等,返回零。

  4. 降序排序:要實現降序排序,比較函數應返回 b - a,這與升序排序相反。這將導致 b 大於 a 時返回正數,b 排在 a 的前面,從而實現降序排序。

  5. 自定義排序規則:比較函數允許您自定義排序規則,不僅限於數字,也可以用於字符串、日期等各種數據類型的排序。