tengo este codigo:
var name1 = "John James" var name2 = "Jake Connor Steve" var name3 = "George" var name4 = "Michael James Jackson"Lo que necesito verificar si cada cadena tiene más de dos palabras, si la cadena es más grande que dos palabras, elimine las palabras del medio y mantenga solo la primera y la última palabra, por lo que el resultado sería este:
var name1 = "John James" var name2 = "Jake Steve" var name3 = "George" var name4 = "Michael Jackson"No sé cómo identificar el tamaño de las palabras dentro de una cadena, ¿cómo puedo hacerlo? ¿Cualquier sugerencia?
split la cadena en una matriz. Si la longitud de la matriz es mayor que 2, elimine el elemento en el primer índice con splice . Luego devuelva una nueva join unida.
function checkRemove(str) { const arr = str.split(' '); if (arr.length > 2) arr.splice(1, 1); return arr.join(' '); } console.log(checkRemove('Jake Connor Steve')); console.log(checkRemove('John James')); console.log(checkRemove('George')); console.log(checkRemove('Michael James Jackson')); const name1 = "John James" const name2 = "Jake Connor Steve" const name3 = "George" const name4 = "Michael James Jackson" function midRemover(str) { //First we turn the string into an array by using the .split() so we can find the middle number in the array. const arr = str.split(" "); //next we need to find the middle value from our string turned array and remove it const middle = Math.floor(arr.length / 2); // We check to make sure that we have more than 2 items in the array so we don't just remove whats there (if there's only one or less items), //We just return those items. if (arr.length > 2) { // We use Splice to remove the middle index. arr.splice(middle, 1) //Then use .join() to turn our array back into a string return arr.join(" "); } else { return arr.join(" "); } } console.log(midRemover(name1)); console.log(midRemover(name2)); console.log(midRemover(name3)); console.log(midRemover(name4));Un enfoque ligeramente diferente usando RegExp para filtrar espacios en blanco y filter para excluir índices intermedios.
const foo = str => str .split(/\s/ig) .filter((a,b,c) => b == 0 || b === c.length - 1) .join(' '); // test console.log([ "John James", "Jake Connor Steve", "George", "Michael James Jackson" ].map(foo));