简体   繁体   English

用Javascript对具有多个值的数组进行排序

[英]Sort array with multiple values in Javascript

How do you sort an array like this fullnamearray.push(firstname +" "+ lastname); 你如何排序这样的数组fullnamearray.push(firstname +" "+ lastname); ?I want to sort it by lastname not firstname. 我想按姓氏而不是名字排序。 The list should be displayed firstname followed by lastname. 该列表应显示名字,然后显示姓氏。

code

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

Concatenate them when you output, not when you store: 在输出时而不是在存储时将它们串联:

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

?I want to sort it by lastname not firstname. 我想按姓氏而不是名字排序。 The list should be displayed firstname followed by lastname. 该列表应显示名字,然后显示姓氏。

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

Now you can display the list in the same manner you were doing earlier. 现在,您可以按照之前的方式显示列表。

Above method will fail if firstname or lastname has a space character in between, so maybe you can follow what @Thilo has suggested 如果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 );
});

and display list as 并显示为

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

Try this: 尝试这个:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM