我有一个数组(请参阅下面的数组中的一个对象),我需要使用 JavaScript 按名字排序。
我该怎么做?
var user = {
bio: null,
email: "user@domain.example",
firstname: "Anna",
id: 318,
lastAvatar: null,
lastMessage: null,
lastname: "Nickson",
nickname: "anny"
};
原文由 Jonathan Clark 发布,翻译遵循 CC BY-SA 4.0 许可协议
假设您有一个数组
users
。您可以使用users.sort
并传递一个接受两个参数并比较它们的函数(比较器)它应该返回
如果第一个参数小于第二个,则为负数(应放在结果数组中的第二个之前)
如果第一个参数更大,则为正值(应放在第二个参数之后)
如果这两个元素相等,则为 0。
在我们的例子中,如果两个元素是
a
和b
,我们想要比较a.firstname
和b.firstname
例子:
此代码适用于任何类型。
请注意,在“real life”™ 中,您经常希望在比较字符串时忽略大小写、正确排序变音符号、ß 等奇怪符号等,因此您可能需要使用
localeCompare
。为了清楚起见,请参阅其他答案。