Olá pessoal!
Apesar de não ser a solução mais ótima, acho que é bem intuitiva
Como quando a gnt observa no terminal, vemos "" contando como uma palavra, eu achei melhor simplesmente filtrar os "" do array de palavras
Sou novo no JS e não sei fazer uma filtragem mais elaborada e que seja mais eficiente do que o bom e velho if, então a implementação constou de observar se a string de cada iteração do for não for um "", adicioná-la à variável individualWords
, que é o array que -- naturalmente -- irá conter palavras individuais
function countWordsChars(originalPhrase){
let phrase = originalPhrase.split(' ');
let individualWords = [];
// Avoid counting "" as a word
for (let counter=0; counter<phrase.length; counter++){
if (phrase[counter] !== "")
individualWords.push(phrase[counter]);
}
const wordsCount = individualWords.length;
const charsCount = originalPhrase.length;
return [wordsCount, charsCount];
}
Dessa forma, quando não temos nada no textarea, tanto palavras quanto caracteres são contados como zero, além de serem contadas corretamente a cada 'keyup' (usei 'keyup' como evento para testar alternativas ao 'input')