I have this code where First Name - Last Name from a textarea will be split and swap places - output will be Last Name - First letter of First name and separated by a "/". However, I have ran out of idea on how to remove the extra "/" at the end of the output.
Input:
John Doe
Jane Doe
Johnny Doe
Desired output: Doe, J / Doe, J / Doe, J
But getting : Doe, J / Doe, J / Doe, J / (with this extra /)
How do I omit this if it is the last?
splitName.onclick = function() {
document.getElementById("result").innerHTML = '';
var value = document.getElementById("fullName").value;
value.split('\n').forEach(fullname => {
var spaceIndex = fullname.indexOf(" ");
var firstname;
var lastname;
var tournament = "Round # Sixshooter (Tournament Name YYYY):";
if (spaceIndex == -1) {
lastname = fullname;
lastname = "";
} else {
firstname = fullname.substring(0, spaceIndex);
lastname = fullname.substr(spaceIndex + 1);
}
document.getElementById("result").innerHTML += [lastname, firstname[0]].filter(Boolean).join(", ") + " / ";
});
};
<div>
<textarea cols="50" rows="5" id="fullName" class= ""></textarea>
</div>
<button id="splitName">Click me</button>
<div>
<br>
</div>
<div class= "border" id="result"></div>
You can create an array of names and then use Array.join('/')
Example of concatenation with Array.join:
let names = ['Doe, J', 'Doe, J', 'Doe, J'];
document.getElementById("result").innerHTML = names.join(' / ');
will result in
'Doe, J / Doe, J / Doe, J'
Using a regular expression might be a little easier. match on the first and last names, and then map over each element in the array the match finds, and then join the array up.
const ta = document.querySelector('textarea');
const regex = /([A-Za-z]+) ([A-Za-z]+)/g;
const arr = ta.value.match(regex);
const mapped = arr.map(el => {
const [first, last] = el.split(' ');
return `${last} ${first[0]}`;
});
console.log(mapped.join(' / '));
<textarea>
John Doe
Jane Doe
Billy Joel
Johnny Doe
</textarea>