ich eine Funktion schreiben wollen, die Namen wie diese ...entfernen Nachname Suffix mit Javascript rekursive Funktion
Dan Smith Jr
Kim Johnson II
Dr Jones PHD
Bill Clinton
und gibt den Nachnamen ...
Smith
Johnson
Jones
Clinton
Meine Lösung nimmt, ist um das letzte Wort von einer Zeichenkette zu trennen, es mit einem Stoppwortarray zu vergleichen und rekursiv zu wiederholen, bis ein Wort nicht im Stoppwortarray ist ...
var fullNameArray;
var lastName;
var suffixArray = ["jR","Jr","JR","jr","I","II","III","i","ii","iii","PHD","PHd"]; //list of stopword prefixes
function getLastName(fullName){
fullNameArray = fullName.split(" ");
lastName = fullNameArray[fullNameArray.length - 1]; //got the last word
if (suffixArray.indexOf(lastName) == -1) {
//it's NOT a suffix so RETURN the name
console.log("returning last name of: " + lastName);
return lastName;
} else {
//it WAS a suffix so call the function again with the last name chopped off
fullNameArray.pop(); //remove the last item
getLastName(fullNameArray.join(" "));
}
}
Mein Problem ist, dass der rekursive Aufruf nicht wie erwartet funktioniert:
getLastName ("Dan Smith") korrekt zurückgibt:
"returning last name of: Smith"
"Smith"
getLastName ("Dan Smith Jr") gibt ...
Welchen Fehler mache ich für die Rückkehr nicht von innerhalb eines rekursiven Anrufs zu arbeiten? !!
oh Mann - das ist schmerzhaft - Dank/leid (Ich werde in 5 Minuten als Antwort akzeptieren) – d3wannabe