JavaScript 中的字串排序

Shraddha Paghdar 2023年10月12日
  1. 使用 sort() 方法對 JavaScript 字串進行排序
  2. 使用 localeCompare() 方法對 JavaScript 字串進行排序
JavaScript 中的字串排序

JavaScript 字串包含零個或多個帶引號的字元,用於儲存和操作文字。

當談到 JavaScript 中的字串時,有一些有用的內建方法可以幫助我們處理和操作它們。本文將向你展示如何使用內建的 JavaScript 方法對字串陣列進行排序。

JavaScript 有兩種方法,sortlocaleCompare,它們通過改變原始字串陣列來返回一個有序的字串陣列。

使用 sort() 方法對 JavaScript 字串進行排序

sort() 方法是 JavaScript 提供的內建方法,用於對陣列的元素進行排序。

這種排序是通過將元素轉換為字串來完成的。在此基礎上,它將比較它們的 UTF-16 程式碼單元值序列。

標準順序始終是升序。這個方法改變了原始陣列。

語法:

sort()
sort((firstEl, secondEl) => {...})
sort(compareFn)
sort(function compareFn(firstEl, secondEl) {
  ...
})

引數 firstElsecondEl 代表陣列中需要比較和排序的兩個元素。compareFn 是一個可選函式,用於定義自定義排序函式。這個方法的返回值是它就地返回排序後的陣列,這意味著它改變了原始陣列並將結果儲存在原始陣列中。

有關更多資訊,請檢視 sort() 方法的文件。

const osItems = ['Linux', 'Ubuntu', 'Windows', 'MacOS', 'Fedora'];
osItems.sort();
console.log(osItems);

如果我們呼叫 sort(),這將根據 UTF-16 程式碼單元對原始陣列 osItems 進行排序,並將結果儲存回 osItems 陣列。當你執行上面的程式碼時,它會給你下面的輸出。

輸出:

["Fedora", "Linux", "MacOS", "Ubuntu", "Windows"]

使用 localeCompare() 方法對 JavaScript 字串進行排序

localeCompare() 方法是 JavaScript 提供的內建方法。

此方法檢查引用字串是在前面還是在後面,是否與排序順序中的指定字串匹配,並基於此返回數字。如果你通過其他語言環境,實際結果可能會有所不同。

語法:

localeCompare(compareString)
localeCompare(compareString, locales)
localeCompare(compareString, locales, options)

compareString 是一個必需引數,它是一個字串,與引用字串進行比較。

locales 表示應該使用其格式約定的語言,它是一個完全可選的引數。根據比較,如果在比較字串之後出現引用字串,則返回 1,如果在比較字串之前出現引用字串,則返回 -1,如果兩個字串相等,則返回 0

有關更多資訊,請檢視 localeCompare() 方法的文件。

sort 方法中使用 localeCompare 方法的唯一優點是它允許對非 ASCII 字元進行排序,例如 é 和 è。localeCompare 方法的語言環境和選項引數使其更準確。

const osItems = ['Linux', 'Ubuntu', 'Windows', 'MacOS', 'Fedora'];
osItems.sort((a, b) => a.localeCompare(b, 'en'));
console.log(osItems);

如果我們呼叫 a.localeCompare(b, 'en'),這將比較原始陣列中的 a(參考字串),在本例中為 osItems,與 b(比較字串)使用英語語言環境。這裡有趣的部分是它只返回 -110,然後 sort 方法將對這些字串進行排序。

當你執行上面的程式碼塊時,它將為你提供以下輸出。

輸出:

["Fedora", "Linux", "MacOS", "Ubuntu", "Windows"]
Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn

相關文章 - JavaScript String