He podido encontrar ejemplos de cómo eliminar la última palabra de una cadena, pero en este caso intento eliminar las últimas 3 palabras de una cadena. He intentado esto ajustando algunas de las respuestas que he encontrado para eliminar una sola palabra, pero ninguna me ha dado los resultados esperados.

Cadena de ejemplo Highest ranked in the states

Me gustaría que mi valor de retorno sea Highest ranked

Aquí hay algunos fragmentos de código de lo que he intentado:

let myString = "Highest ranked in the states";

myString = myString.substring(2, myString.lastIndexOf(" "));

console.log(myString)


let myString2 = "I want to remove the last word";
let mySplitResult2 = myString2.split(" ");
let lastWord =  mySplitResult2[mySplitResult2.length-3] 

console.log(lastWord)

Con el ajuste del método de subcadena a (2, myString.lastIndexOf(" ")); terminó eliminando las dos primeras letras de mi oración y solo eliminó la palabra states como "invitado clasificado en el"

Al ajustar el método .split () a la longitud -3, simplemente devuelve la palabra in en lugar de in the states

0
maimok 23 jul. 2020 a las 03:44

3 respuestas

La mejor respuesta

Aquí hay un lindo y fácil de leer:

const remove3words = words => words.split(" ").slice(0, -3).join(" ");

console.log(remove3words("Highest ranked in the states"));
console.log(remove3words("Exactly three words"));

Puede generalizarlo fácilmente a n palabras de la siguiente manera:

function remove_n_words(words, n) {
    return n === 0 ? words : words.split(" ").slice(0, -n).join(" ");
}

// Test the function
console.log(remove_n_words("Highest ranked in the states", 0));
console.log(remove_n_words("Highest ranked in the states", 3));
console.log(remove_n_words("Highest ranked in the states", 100));
2
shmulvad 24 jul. 2020 a las 09:59

Vea los comentarios para obtener una explicación usando split and splice

let myString = "Highest ranked in the states";
//split the str using blank space between each word and add to new variable
let str = myString.split(" ");
//get the length 
let num = str.length;
//splice the array removing the last three values with the number - 3
let newStr = str.splice(0, num - 3);

let displayText = '';
//back into string
newStr.forEach(function(value){
  displayText += value + ' ';
});
display.textContent = displayText;
<div id="display"></div>
0
dale landry 23 jul. 2020 a las 01:05
let myString = "Highest ranked in the states";

myString = myString.split(' ')
myString = myString.splice(myString.length-5,2)
myString = myString.join(' ')

console.log(myString)
0
iKaio 23 jul. 2020 a las 01:01
63045151