1.使用 JavaScript 中的 if 条件和 sort() 函数按字母顺序对对象数组进行排序
// 如果我们有一个字符串或整数数组,我们可以使用 JavaScript 中的 sort() 函数轻松地对它们进行排序。
// 例如,让我们使用 sort() 函数按字母顺序对字符串数组进行排序。请参考下面的代码。
var a = ['banana', 'apple', 'orange']
var m = a.sort();
console.log(m); //['apple', 'banana', 'orange']
// 如果我们有一个对象数组,在使用 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); //[{FirstName: "Lara", LastName: "Croft"},{FirsName: "Ellie", LastName: "Williams"}]
2.使用 JavaScript 中的 localeCompare() 和 sort() 函数按字母顺序对对象数组进行排序
查看此链接以获取有关 localeCompare()
函数的更多详细信息。
// 使用 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); //[{FirstName: "Lara", LastName: "Croft"},{FirsName: "Ellie", LastName: "Williams"}]
// 你还可以将该功能设置为在比较期间忽略任何标点符号和特殊字符。
// 例如,如果我们在某人的姓氏之前有标点符号,则该函数不会对数组进行排序。
// 在这种情况下,我们可以使用 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); //[{FirstName: 'Lara', LastName: 'Croft'},{FirsName: 'Ellie', LastName: ',Williams'}]
// 即使存在标点符号,数组也会根据姓氏排序。你还可以通过将 localeCompare() 函数的灵敏度设置为 base 来忽略字符串中存在的特殊字符,如下所示。
x.LastName.localeCompare(y.LastName, 'en', {
sensitivity: 'base'
});
3.使用 JavaScript 中的 Collator() 和 sort() 函数按字母顺序对对象数组进行排序
// 使用 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); //[{FirstName: 'Lara', LastName: 'Croft'},{FirsName: 'Ellie', LastName: 'Williams'}]
你还可以通过更改 collator.compare()
函数中两个参数的位置,将排序顺序更改为降序。你还可以使用 Collator()
函数来比较不同语言的字符串;你只需要使用该语言初始化 collator 对象。例如,在上面的代码中,我们使用 en
表示英语。查看此链接以获取有关 Collator()
函数的更多详细信息。