在Javascript中使用多个值对数组进行排序

时间:2016-05-12 05:11:04

标签: javascript jquery

如何对像fullnamearray.push(firstname +" "+ lastname);这样的数组进行排序?我想按姓氏而不是名字对其进行排序。该列表应显示firstname,后跟lastname。

 fullnamearray.push(firstname +" "+ lastname);
 fullnamearray.sort();
  for(var i = 0; i < fullnamearray.length; i++){
               Name.innerHTML += '<li>' + fullnamearray[i] + '</li>';
               }

3 个答案:

答案 0 :(得分:1)

在输出时连接它们,而不是在存储时连接它们:

fullnamearray.push([lastname, firstname]);
fullnamearray.sort();
for(var i = 0; i < fullnamearray.length; i++){
     Name.innerHTML += '<li>' + fullnamearray[i][1] + " " +  fullnamearray[i][0] + '</li>';
}

答案 1 :(得分:0)

  

?我想按姓氏而不是名字对其进行排序。清单应该是   显示名字后跟姓氏。

fullnamearray.sort( function(a,b){
  var lastNameA = a.split(" ")[1];
  var lastNameB = b.split(" ")[1];
  return lastNameA.localeCompare( lastNameB );
})

现在,您可以按照之前的方式显示列表。

如果firstnamelastname之间有空格字符,则上述方法将失败,因此您可以按照@Thilo的建议进行操作

fullnamearray.push({first: firstname, last: lastName});
fullnamearray.sort( function(a,b){
  var lastNameA = a.lastName;
  var lastNameB = b.lastName;
  return lastNameA.localeCompare( lastNameB );
});

并将列表显示为

for(var i = 0; i < fullnamearray.length; i++){
    Name.innerHTML += '<li>' + fullnamearray[i].firstName + " " + fullnamearray[i].lastName '</li>';
}

答案 2 :(得分:0)

试试这个:

fullnamearray.push(firstname +" "+ lastname);
fullnamearray.sort(function (name1, name2) {
    return name1.split(' ')[1] > name1.split(' ')[1];
});