有时您可能有一个单词数组,您希望按字母顺序(从 az 开始)对每个单词进行排序。或者,您可能有一个包含用户信息(包括名称)的对象数组,例如,您希望在其中按用户名称对用户进行排序。
我们可以在 JavaScript 中sort()
直接使用该方法或使用 compare 函数来做到这一点。
如果你赶时间,这里有两种方法:
// order an array of names
names.sort();
// order an array of objects with name
users.sort(function (a, b) {
if (a.name < b.name) {
return -1;
}
if (a.name > b.name) {
return 1;
}
return 0;
});
现在让我们了解一下我们是如何得出这两种解决方案的。
如何按字母顺序对名称数组进行排序
假设我们有一个名称数组:
let names = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
我们可以使用以下方法按字母顺序对这些名称进行排序sort()
:
let sortedNames = names.sort();
console.log(sortedNames);
这将返回一个按字母顺序排列的名称数组:
["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 中按名称按字母顺序排序
在现实世界的场景中,我们可能有一组用户,每个用户的信息都在一个对象中。此信息可以是用户名旁边的任何内容。例如:
let users = [
{
name: "John Doe",
age: 17
},
{
name: "Elon Doe",
age: 27
},
{
name: "Alex Doe",
age: 14
}
];
看上面的对象,之前我们sort()
直接在数组上应用方法的方法是行不通的。相反,它会抛出相同的数组,但项目不会按照我们想要的顺序排列。
我们将使用该sort()
方法与 compare 函数一起按名称对这个用户数组进行排序。
我们将使用比较函数来定义替代排序顺序。它根据参数返回负值、零值或正值:
句法:
function(a, b){return a - b}
当我们将此比较函数传递给该sort()
方法时,它会根据我们设置的条件比较每个值,然后根据返回值(负、零、正)对每个名称进行排序。
- 如果结果是否定的,
a
则排在前面b
。 - 如果结果为正,
b
则排在“a”之前。 - 如果结果为
0
,则不会更改两个值的排序顺序。
使用上面的示例,我们现在可以通过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。否则,它返回 0。返回的值用于按字母顺序排列数组的值:
[
{
name: "Alex Doe",
age: 14
},
{
name: "Elon Doe",
age: 27
},
{
name: "John Doe",
age: 17
}
]
**注意:**就像我们之前看到的,这总是根据字母大小写工作,并且会在小写之前排序大写字母:
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
}
]
包起来
在本文中,您学习了如何sort()
在两种可能的情况下使用该方法按字母顺序排列数组。
在名称有不同字母大小写的情况下,最好先将它们转换为特定的字母大小写,然后再使用该sort()
方法。
本文转自 https://blog.csdn.net/six6de6/article/details/126354747,如有侵权,请联系删除。