为了账号安全,请及时绑定邮箱和手机立即绑定

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

/ 猿问

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

holdtom 2019-07-22 15:07:36

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

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

var user = {
   bio: null,
   email:  "user@domain.com",
   firstname: "Anna",
   id: 318,
   lastAvatar: null,
   lastMessage: null,
   lastname: "Nickson",
   nickname: "anny"};


查看完整描述

3 回答

?
芜湖不芜

假设您有一个数组users..你可以用users.sort并传递一个函数,该函数接受两个参数并对它们进行比较(比较器)

它应该会回来

  • 如果第一个参数小于第二个参数,则为负值(在结果数组中,应放在第二个参数之前)。
  • 如果第一个论点更大的话(应该放在第二个论点之后)
  • 如果这两个元素相等,则为0。

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

例子:

users.sort(function(a, b){
    if(a.firstname < b.firstname) { return -1; }
    if(a.firstname > b.firstname) { return 1; }
    return 0;})

此代码将适用于任何类型。

请注意,在“现实生活”™中,您经常希望在比较字符串时忽略大小写,正确地排序指示符、奇怪的符号(例如,),所以您可能想要使用localeCompare..为了清晰起见,请参阅其他答案。


查看完整回答
反对 回复 2019-07-22
?
MYYA

就像这样:

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)});


查看完整回答
反对 回复 2019-07-22
?
智慧大石

如果比较的字符串包含Unicode字符,则可以使用localeCompare功能String类,如下所示:

users.sort(function(a,b){
    return a.firstname.localeCompare(b.firstname);})


查看完整回答
反对 回复 2019-07-22

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信