我有一个数组(请参阅下面的数组中的一个对象),我需要使用 JavaScript 按名字排序。我该怎么做?
var user = { bio: null, email: "user@domain.com", firstname: "Anna", id: 318, lastAvatar: null, lastMessage: null, lastname: "Nickson", nickname: "anny" };
假设你有一个数组users。您可以使用users.sort并传递一个接受两个参数并比较它们的函数(比较器)
users
users.sort
它应该返回
在我们的例子中,如果两个元素是a并且b我们想要比较a.firstname和b.firstname
a
b
a.firstname
b.firstname
例子:
users.sort(function(a, b){ if(a.firstname < b.firstname) { return -1; } if(a.firstname > b.firstname) { return 1; } return 0; })
此代码适用于任何类型。
请注意,在“现实生活”中,您经常希望在比较字符串时忽略大小写、正确排序变音符号、脽等奇怪符号等,因此您可能需要使用localeCompare. 为了清楚起见,请参阅其他答案。
localeCompare