JavaScript 按字母順序排列物件陣列
-
使用 JavaScript 中的
if
條件和sort()
函式按字母順序對物件陣列進行排序 -
使用 JavaScript 中的
localeCompare()
和sort()
函式按字母順序對物件陣列進行排序 -
使用 JavaScript 中的
Collator()
和sort()
函式按字母順序對物件陣列進行排序
本教程將討論使用 JavaScript 中的 sort()
函式按字母順序排列物件陣列。
使用 JavaScript 中的 if
條件和 sort()
函式按字母順序對物件陣列進行排序
如果我們有一個字串或整數陣列,我們可以使用 JavaScript 中的 sort()
函式輕鬆地對它們進行排序。例如,讓我們使用 sort()
函式按字母順序對字串陣列進行排序。請參考下面的程式碼。
var a = ['banana', 'apple', 'orange']
var m = a.sort();
console.log(m);
輸出:
Array(3)
0: "apple"
1: "banana"
2: "orange"
length: 3
如你所見,陣列按字母順序排序,結果儲存在變數 m
中。如果我們有一個物件陣列,在使用 sort()
函式對陣列進行排序之前,我們必須使用一些條件。例如,如果我們有一個包含某些人的名字和姓氏的物件陣列,我們想根據這些人的姓氏對陣列進行排序。我們必須在 sort()
函式內部傳遞一個函式,它將比較每個人的姓氏,如果第一人的姓氏小於第二人的姓氏,則該函式將返回一個負值,如果大於,函式將返回正值;如果兩者相等,函式將返回零。請參考下面的程式碼。
var a = [
{FirsName:"Ellie", LastName:"Williams"},
{FirstName:"Lara", LastName : "Croft"}
];
function SortArray(x, y){
if (x.LastName < y.LastName) {return -1;}
if (x.LastName > y.LastName) {return 1;}
return 0;
}
var s = a.sort(SortArray);
console.log(s);
輸出:
(2) [{…}, {…}]
0: {FirstName: "Lara", LastName: "Croft"}
1: {FirsName: "Ellie", LastName: "Williams"}
length: 2
如你所見,陣列是根據姓氏排序的。你還可以增加陣列內的物件數量。你還可以根據名字對陣列進行排序。
使用 JavaScript 中的 localeCompare()
和 sort()
函式按字母順序對物件陣列進行排序
除了使用 if
條件,你還可以使用 localeCompare()
函式來比較字串。它提供了許多其他的比較選項,你可以在函式內部設定這些選項。例如,讓我們使用 localeCompare()
函式比較上述物件陣列。請參考下面的程式碼。
var a = [
{FirsName:"Ellie", LastName:"Williams"},
{FirstName:"Lara", LastName : "Croft"}
];
function SortArray(x, y){
return x.LastName.localeCompare(y.LastName);
}
var s = a.sort(SortArray);
console.log(s);
輸出:
(2) [{…}, {…}]
0: {FirstName: "Lara", LastName: "Croft"}
1: {FirsName: "Ellie", LastName: "Williams"}
length: 2
輸出與上述方法相同。你還可以將該功能設定為在比較期間忽略任何標點符號和特殊字元。例如,如果我們在某人的姓氏之前有標點符號,則該函式不會對陣列進行排序。在這種情況下,我們可以使用 localeCompare()
函式並將其設定為在比較期間忽略標點符號。請參考下面的程式碼。
var a = [
{FirsName:"Ellie", LastName:",Williams"},
{FirstName:"Lara", LastName : "Croft"}
];
function SortArray(x, y){
return x.LastName.localeCompare(y.LastName, 'fr', {ignorePunctuation: true});
}
var s = a.sort(SortArray);
console.log(s);
輸出:
(2) [{…}, {…}]
0: {FirstName: "Lara", LastName: "Croft"}
1: {FirsName: "Ellie", LastName: ",Williams"}
length: 2
即使存在標點符號,陣列也會根據姓氏排序。你還可以通過將 localeCompare()
函式的靈敏度設定為 base 來忽略字串中存在的特殊字元,如下所示。
x.LastName.localeCompare(y.LastName, 'en', { sensitivity: 'base' });
檢視此連結以獲取有關 localeCompare()
函式的更多詳細資訊。
使用 JavaScript 中的 Collator()
和 sort()
函式按字母順序對物件陣列進行排序
除了使用 if
條件,你還可以使用 Collator()
函式來比較字串。例如,讓我們使用 Collator()
函式比較上述物件陣列。請參考下面的程式碼。
const collator = new Intl.Collator('en');
var a = [
{FirsName:"Ellie", LastName:"Williams"},
{FirstName:"Lara", LastName : "Croft"}
];
function SortArray(x, y){
return collator.compare(x.LastName, y.LastName);
}
var s = a.sort(SortArray);
console.log(s);
輸出:
(2) [{…}, {…}]
0: {FirstName: "Lara", LastName: "Croft"}
1: {FirsName: "Ellie", LastName: "Williams"}
length: 2
輸出與上述方法相同。你還可以通過更改 collator.compare()
函式中兩個引數的位置,將排序順序更改為降序。你還可以使用 Collator()
函式來比較不同語言的字串;你只需要使用該語言初始化 collator 物件。例如,在上面的程式碼中,我們使用 en
表示英語。檢視此連結以獲取有關 Collator()
函式的更多詳細資訊。