在JavaScript 中按字母排序之如何在 JS 中按名稱排序
有時你可能有一個單詞數(shù)組,你想按字母順序(從 a-z)對每個單詞進行排序?;蛘吣憧赡苡幸粋€包含用戶信息(包括名字)的對象數(shù)組,例如,你想按照用戶的名字來排序。
我們可以在 JavaScript 中通過直接使用 sort()
方法或使用比較函數(shù)來實現(xiàn)這個目的。
如果你很著急的話,這里有兩種方法:
// 對一個名字數(shù)組進行排序 names.sort(); // 通過 name 對一個對象數(shù)組進行排序 users.sort(function (a, b) { if (a.name < b.name) { return -1; } if (a.name > b.name) { return 1; } return 0; });
現(xiàn)在讓我們來了解一下我們是如何得出這兩種解決方案的。
如何按字母順序對一個名字數(shù)組進行排序
假設我們有一個名字的數(shù)組:
let names = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
我們可以使用 sort()
方法按字母順序對這些名字進行排序:
let sortedNames = names.sort(); console.log(sortedNames);
這將返回一個按字母排序的名字數(shù)組:
["Alex Doe","Elon Doe","John Doe","Peter Doe"]
注意:當一些名字首字母大寫,而其他名字首字母小寫時,那么輸出將是不正確的,因為 sort()
方法將大寫字母放在小寫字母之前:
let names = ["John Doe", "alex Doe", "peter Doe", "Elon Doe"]; let sortedNames = names.sort(); console.log(sortedNames); // ["Elon Doe","John Doe","alex Doe","peter Doe"]
所以你需要確保這些詞的大小寫都是一樣的,否則它就不能按照我們的需求按字母順序返回名字。
如何在 JavaScript 中按姓名的字母順序排列
在現(xiàn)實場景中,我們可能有一個用戶數(shù)組,每個用戶的信息都在一個對象中。這些信息可以是任何與用戶的名字有關的信息,比如說:
let users = [ { name: "John Doe", age: 17 }, { name: "Elon Doe", age: 27 }, { name: "Alex Doe", age: 14 } ];
看一下上面的對象,之前我們直接在數(shù)組上應用 sort()
方法的方式將不會起作用。相反,它將拋出相同的數(shù)組,但項目不會按照我們想要的順序排列。
我們將在使用 sort()
方法的同時使用比較函數(shù)來按名字對這個用戶數(shù)組進行排序。
我們將使用比較函數(shù)來定義一個替代的排序順序。根據(jù)參數(shù)的不同,它返回一個負值、零值或正值:
語法:
function(a, b){return a - b}
當我們把這個比較函數(shù)傳入 sort()
方法時,它根據(jù)我們設定的條件對每個值進行比較,然后根據(jù)返回的值對每個名字進行排序(負數(shù)、零、正數(shù))。
- 如果結果是負的,
a
被排序在b
之前。 - 如果結果是正數(shù),則
b
被排序在a
之前。 - 如果結果是
0
,兩個值的排序順序不做任何改變。
使用上面的例子,我們現(xiàn)在可以這樣將比較函數(shù)和 sort()
方法一起使用:
users.sort(function (a, b) { if (a.name < b.name) { return -1; } if (a.name > b.name) { return 1; } return 0; }); console.log(users);
上面的代碼對每個名字進行比較。如果是大于,它返回 1。如果是小于,則返回 -1。返回的值用于按字母順序排列我們的數(shù)組的值:
[ { name: "Alex Doe", age: 14 }, { name: "Elon Doe", age: 27 }, { name: "John Doe", age: 17 } ]
注意:就像我們之前看到的,這總是根據(jù)字母的大小寫運行,并將大寫字母排在小寫字母之前。
let users = [ { name: "alex Doe", age: 14 }, { name: "Elon Doe", age: 27 }, { name: "John Doe", age: 17 } ]; users.sort(function (a, b) { if (a.name < b.name) { return -1; } if (a.name > b.name) { return 1; } return 0; }); console.log(users);
輸出:
?[
{
name: "Elon Doe",
age: 27
},
{
name: "John Doe",
age: 17
},
{
name: "alex Doe",
age: 14
}
]
總結
在這篇文章中,你已經(jīng)學會了如何在兩種可能的情況下使用 sort()
方法按字母順序排列數(shù)組。
在名字有不同字母大小寫的情況下,最好在使用 sort()
方法之前先將它們轉換為特定的字母大小寫。
到此這篇關于在JavaScript 中按字母排序之如何在 JS 中按名稱排序的文章就介紹到這了,更多相關js按名稱排序內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!