我得到了一个数组(参见下面的数组中的一个对象),我需要使用JavaScript按名字进行排序。我该怎么做呢?
var user = {
bio: null,
email: "user@domain.com",
firstname: "Anna",
id: 318,
lastAvatar: null,
lastMessage: null,
lastname: "Nickson",
nickname: "anny"
};发布于 2011-07-16 03:15:42
假设您有一个数组users。您可以使用users.sort并传递一个接受两个参数并进行比较的函数(比较器)
它应该会返回
如果第一个参数小于第二个参数,则为负的元素(如果第一个参数大于第二个参数,则应放在第二个参数的前面(如果第一个参数大于第二个参数,则应放在第二个参数之后)。
在我们的例子中,如果两个元素是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。为了清楚起见,请参阅其他答案。
发布于 2017-08-07 17:56:25
用ES6编写尽可能短的代码!
users.sort((a, b) => a.firstname.localeCompare(b.firstname))String.prototype.localeCompare() basic支持是通用的!
发布于 2011-07-16 03:13:26
如下所示:
array.sort(function(a, b){
var nameA=a.name.toLowerCase(), nameB=b.name.toLowerCase();
if (nameA < nameB) //sort string ascending
return -1;
if (nameA > nameB)
return 1;
return 0; //default return value (no sorting)
});https://stackoverflow.com/questions/6712034
复制相似问题