首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Javascript中按名字(字母顺序)对数组排序

在Javascript中按名字(字母顺序)对数组排序
EN

Stack Overflow用户
提问于 2011-07-16 03:10:56
回答 22查看 944K关注 0票数 916

我得到了一个数组(参见下面的数组中的一个对象),我需要使用JavaScript按名字进行排序。我该怎么做呢?

代码语言:javascript
复制
var user = {
   bio: null,
   email:  "user@domain.com",
   firstname: "Anna",
   id: 318,
   lastAvatar: null,
   lastMessage: null,
   lastname: "Nickson",
   nickname: "anny"
};
EN

回答 22

Stack Overflow用户

回答已采纳

发布于 2011-07-16 03:15:42

假设您有一个数组users。您可以使用users.sort并传递一个接受两个参数并进行比较的函数(比较器)

它应该会返回

如果第一个参数小于第二个参数,则为负的元素(如果第一个参数大于第二个参数,则应放在第二个参数的前面(如果第一个参数大于第二个参数,则应放在第二个参数之后)。

  • 0,如果这两个元素相等,则

  • 0。

在我们的例子中,如果两个元素是ab,我们想要比较a.firstnameb.firstname

示例:

代码语言:javascript
复制
users.sort(function(a, b){
    if(a.firstname < b.firstname) { return -1; }
    if(a.firstname > b.firstname) { return 1; }
    return 0;
})

这段代码适用于任何类型。

请注意,在“现实生活”™中,当您比较字符串时,您通常希望忽略大小写,正确排序变音符号,奇怪的符号,等等,所以您可能想要使用localeCompare。为了清楚起见,请参阅其他答案。

票数 1.4K
EN

Stack Overflow用户

发布于 2017-08-07 17:56:25

用ES6编写尽可能短的代码!

代码语言:javascript
复制
users.sort((a, b) => a.firstname.localeCompare(b.firstname))

String.prototype.localeCompare() basic支持是通用的!

票数 1.2K
EN

Stack Overflow用户

发布于 2011-07-16 03:13:26

如下所示:

代码语言:javascript
复制
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)
});
票数 375
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6712034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档