如何在 JavaScript 中排序字串?


字串排序是指按照字典順序或字母順序排列字串。在使用 JavaScript 開發應用程式時,通常需要對字串陣列進行排序。在本教程中,我們將學習如何排序JavaScript 中的字串

例如,如果您從 API 獲取了一些資料並希望按排序順序顯示這些資料,則字串排序在這裡非常有用。

在這裡,我們將學習如何使用內建方法和各種簡單方法對字串進行排序。

使用 sort() 方法排序字串

JavaScript中,sort() 是我們可以與陣列一起使用的內建方法。通常,在其他程式語言中,sort() 方法預設按數字值排序。但是,JavaScript 會將數字轉換為字串並按字母順序對其進行排序。

因此,我們可以使用 JavaScript 的sort() 方法而不使用比較器函式來對字串陣列進行排序。

語法

使用者可以按照以下語法使用 JavaScript 的 sort() 方法對字串進行排序。

Strings.sort();

在上面的語法中,我們使用字串陣列作為引用和 sort() 方法。

示例 1

在這個例子中,我們定義了字串陣列並用一些字串值對其進行了初始化。之後,我們以陣列作為引用,並對陣列執行了 sort() 方法。使用者可以觀察到輸出結果:陣列中的所有字串都按字母順序排序。

<html>
<body>
   <h2>Using the <i>sort() method</i> to sort an array of strings in JavaScript.</h2>
  <div id = "output"> </div>
  <script>
      let output = document.getElementById('output');
      let strings = ["Hi", "JavaScript", "TypeScript", "C", "CPP", "Python", "Java", "HTML", "CSS"];
      output.innerHTML += "The original string array is " + strings + "<br/>";
      strings.sort();
      output.innerHTML += "The sorted string array is " + strings + "<br/>";
   </script>
</body>
</html>

使用 for 迴圈排序字串(氣泡排序演算法)

排序字串的簡單方法是使用for 迴圈。我們可以使用兩個巢狀 for 迴圈來比較每個字串與所有其他字串,並按字母順序對其進行排序。我們也可以稱之為氣泡排序演算法

語法

使用者可以按照以下語法使用氣泡排序演算法按字母順序對字串進行排序。

for (let a = 0; a < strings.length; a++) {
   for (let b = a + 1; b < strings.length; b++) {
      if (strings[a] > strings[b]) {
         // swap strings at index a and index b
      }
   }
}

在上面的語法中,我們使用了兩個巢狀的 for 迴圈並遍歷字串陣列。此外,我們正在比較兩個字串值,並根據此結果交換字串。

演算法

步驟 1建立字串陣列

步驟 2 − 使用 for 迴圈並從第 0 個索引開始遍歷字串陣列。

步驟 3 − 在 for 迴圈中,使用另一個 for 迴圈,當 a 是第一個 for 迴圈的迭代指標時,從 a+1 個索引開始迭代。

步驟 4 − 現在,比較第 a 個和第 b 個索引處的字串。

步驟 5 − 如果第 a 個索引處的字串的字母順序大於第 b 個索引處的字串,則交換這兩個字串。

步驟 6 − 完成兩個 for 迴圈的所有迭代以按排序順序獲取所有字串。

示例 2(考慮字串字元的大小寫)

在下面的示例中,我們實現了氣泡排序演算法來對字串陣列進行排序。下面的輸出向我們展示了氣泡排序演算法如何將所有帶有大寫字母的字串排在大寫字母之前的順序,因為在大寫字母的字串比較中,大寫字母的優先順序高於小寫字母。

<html>
<body>
   <h2>Using the <i> bubble sort algorithm </i> to sort an array of strings in JavaScript.</h2>
   <div id = "output"> </div>
   <script>
      let output = document.getElementById('output');

      let strings = ["car", "Bike", "truck", "cycle", "Tempo", "cart", "abcd", "string"];
      output.innerHTML += "The original string array is " + strings + "<br/>";

      for (let a = 0; a < strings.length; a++) {
         for (let b = a + 1; b < strings.length; b++) {
            if (strings[a] > strings[b]) {
               let tempString = strings[a];
               strings[a] = strings[b];
               strings[b] = tempString;
            }
         }
      }  
      output.innerHTML += "The sorted string array is " + strings + "<br/>";
   </script>
</body>
</html>

示例 3(忽略字串字元的大小寫)

在這個示例中,我們實現了氣泡排序演算法來對字串進行排序,但是我們正在比較小寫字串。在上面的例子中,我們根據字母順序對字串進行了排序,並優先考慮大寫字串。但是在這裡,我們忽略了字串字元的大小寫並進行字串比較。

<html>
<body>
   <h2>Using the <i> bubble sort algorithm </i> to sort an array of strings in JavaScript.</h2>
   <div id = "output"> </div>
   <button onclick = "sortStrings()"> Sort Strings </button>
   <script>
      let output = document.getElementById('output');

      let strings = ["ab", "Bc", "AB", "AC", "cd", "ds", "ds", "erere", "DS"];
      output.innerHTML += "The original strings are " + strings + "<br/>";

      function sortStrings() {
         function swap(index1, index2) {
            let tempString = strings[index1];
            strings[index1] = strings[index2];
            strings[index2] = tempString;
         }

         for (let a = 0; a < strings.length; a++) {
            for (let b = a + 1; b < strings.length; b++) {
               if (strings[a].toLowerCase() > strings[b].toLowerCase()) {
                  swap(a, b)
               }
            }
         }
         output.innerHTML += "The sorted strings are " + strings + "<br/>";
      }
   </script>
</body>
</html>

在本教程中,我們學習瞭如何對多個字串進行排序。在第一種方法中,我們使用了 sort() 方法,因為它始終按字母順序對字串進行排序。在第二種方法中,我們實現了氣泡排序演算法來對字串進行排序,但是我們可以對其進行最佳化以提高其時間效率。此外,我們還可以使用其他演算法(如歸併排序)來提高排序演算法的時間和空間效率。

更新於:2023年9月14日

28K+ 瀏覽量

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告