JavaScript 中的字串排序
JavaScript 字串包含零個或多個帶引號的字元,用於儲存和操作文字。
當談到 JavaScript 中的字串時,有一些有用的內建方法可以幫助我們處理和操作它們。本文將向你展示如何使用內建的 JavaScript 方法對字串陣列進行排序。
JavaScript 有兩種方法,sort
和 localeCompare
,它們通過改變原始字串陣列來返回一個有序的字串陣列。
使用 sort()
方法對 JavaScript 字串進行排序
sort()
方法是 JavaScript 提供的內建方法,用於對陣列的元素進行排序。
這種排序是通過將元素轉換為字串來完成的。在此基礎上,它將比較它們的 UTF-16
程式碼單元值序列。
標準順序始終是升序
。這個方法改變了原始陣列。
語法:
sort()
sort((firstEl, secondEl) => {...})
sort(compareFn)
sort(function compareFn(firstEl, secondEl) {
...
})
引數 firstEl
和 secondEl
代表陣列中需要比較和排序的兩個元素。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
(比較字串)使用英語語言環境。這裡有趣的部分是它只返回 -1
、1
和 0
,然後 sort 方法將對這些字串進行排序。
當你執行上面的程式碼塊時,它將為你提供以下輸出。
輸出:
["Fedora", "Linux", "MacOS", "Ubuntu", "Windows"]
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