Sé cómo puedo encontrar la palabra más larga en una cadena. Por ejemplo este código aquí. Pero aquí el problema es que la palabra "bbbbbb" se encuentra porque es la PRIMERA PALABRA MÁS LARGA DE LA cadena, después de eso con 6 caracteres también tenemos la palabra "saltó". Mi pregunta es cómo puedo encontrar en este caso y la palabra "saltó", por lo que todos ellos no solo el primero.
ACTUALIZACIÓN: quiero una lista única, por lo que solo una de cada palabras
function longestWord(sentence) {
sentence = sentence.split(' ');
let theWord = sentence[0];
var longest = 0;
for (let i = 0; i < sentence.length; i++) {
if (sentence[i] != "") {
if (sentence[i].length > theWord.length) {
longest = sentence[i].length;
theWord = sentence[i];
}
}
}
return {
length: longest,
actuallWord: theWord
}
}
console.log(longestWord("The quick brown as bbbbbb fox jumped over the bbbbbb lazy dog"));
javascript
arrays
string
Trajce12
fuente
fuente
sentence.filter(w => w.length === longest)
obtener una variedad de palabras con esa longitud.Respuestas:
fuente
Puede adoptar un enfoque de bucle simple y verificar la longitud de cada palabra con la longitud de los acumuladores del primer elemento.
fuente
Puede hacerlo con
Array.prototype.reduce()
una sola pasada a través de la matriz (sin bucles adicionales para calcular la longitud máxima).La idea es restablecer la matriz resultante con una sola palabra, una vez que su longitud excede las que se insertaron antes o anexar si la palabra actual tiene la misma longitud, o simplemente pasar de lo contrario:
fuente
length
ywords
).Puede hacerlo reduciendo la
sentence
matriz.La ventaja de este enfoque es que se repite sobre la matriz solo una vez:
O, si desea filtrar palabras duplicadas, puede devolver un
Set
en su lugar:fuente
Lo que puede hacer es verificar si la longitud de la palabra es mayor o igual que la longitud del primer elemento de la matriz (Todos los elementos de la matriz deben tener la misma longitud).
Si es así, verifique si es mayor. Si eso es cierto, establezca la matriz en esa palabra, porque encontró una palabra que era más grande que las palabras en la matriz. De lo contrario, agréguelo al conjunto de palabras que tienen la mayor longitud.
fuente
También se puede hacer en una sola reducción.
Iniciado con el objeto.
fuente
Este enfoque no tiene una mejor complejidad temporal que las mejores respuestas aquí, pero tiene mejores coeficientes. (Solo recorre el conjunto de palabras una vez, no hay llamadas de función excepto
Array.prototype.push
).fuente