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()
函数的更多详细信息。