如何对像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>';
}
答案 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 );
})
现在,您可以按照之前的方式显示列表。
如果firstname
或lastname
之间有空格字符,则上述方法将失败,因此您可以按照@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];
});