排序和格式姓氏我有一個數組moonwalkers
並寫了一個函數alphabetizer
以字母順序排序的名稱,並先用姓氏格式化。如何在按字母順序排列在JavaScript
它工作正常,但我怎麼寫更好的代碼?
我用這個article by Hubrik並提到Stack Overflow瞭解如何排序在JS工作。
我試圖返工compare
功能到last name
變量和用它製成的一團糟。我懷疑這是因爲我仍然試圖讓我的頭在範圍和提升。
var moonWalkers = [
"Neil Armstrong",
"Buzz Aldrin",
"Pete Conrad",
"Alan Bean",
"Alan Shepard",
"Edgar Mitchell",
"David Scott",
"James Irwin",
"John Young",
"Charles Duke",
"Eugene Cernan",
"Harrison Schmitt"
];
var finalNameList = [];
function alphabetizer(names) {
// compare last names
function compare (a, b) {
var aName = a.split(" ");
var bName = b.split(" ");
var aLastName = aName[aName.length - 1];
var bLastName = bName[bName.length - 1];
if (aLastName < bLastName) return -1;
if (aLastName > bLastName) return 1;
return 0;
}
names.sort(compare);
// to format names
for (i = 0; i < names.length; i++) {
var lastName = names[i].split(" ")[1];
var firstName = names[i].split(" ")[0];
var newName = lastName + ", " + firstName;
// push newName to global var finalNameList
finalNameList.push(newName);
}
return finalNameList;
}
console.log(alphabetizer(moonWalkers));
您的排序回調的身體可以縮短到'回報a.split( 「 」)[1] .localeCompare(b.split(「」)[1]);' - 或之前格式化名稱*排序,你可以直接'返回finalNameList.sort();' – nnnnnn
謝謝@nnnnnn – dho