Foto de Julio C.
Julio há 3 anos
Enviada pelo
Site

Funções

Neste desafio, você deve implementara função vezesLetraAparece, que: • recebe 2 parâmetros: frase, que deve ser uma string e letra outra string; • retorne o número de vezes que letra aparece na frase
1 resposta
Professor Rafael F.
Respondeu há 3 anos
Contatar Rafael

O enunciado não deixa claro como exatamente a função vai ser usada no programa, então partiremos do princípio que ela irá retornar um valor. Pra mim, a forma mais direta de se fazer isso seria com o método split() que o Javascript oferece para strings. O método encontra todas as vezes que uma substring oferecida como argumento é encontrada, e fatia a string em seções antes e depois de cada string, juntando todas as seções numa array. Por exemplo, "javascript ascii".split("asc") retornaria ["jav","ript ","ii"]. O bom do método para o nosso caso é que ele também oferece fatias vazias se a substring se encontra nas extremidades da string ou duas ocorrências se encontram adjacentes., o que nos dá confiança quanto à quantidade de elementos na array resultante. Por exemplo, "paralelepípedo".split("le") retornará ["para","","pípedo] e "bom-bom".split("bom") retorna ["","-",""].

O código ficaria assim:

function vezesLetraAparece(frase, string) {

  return (frase.split("string")).length() - 1;

}

Algumas considerações adicionais podem ser feitas: o método .split() diferencia letras maiúsculas e minúsculas, então se você estiver esperando uma frase com letras maiúsculas, seria interessante aplicar o método toLowerCase() pra passar tudo para minúsculas. Outra questão é se é ou não permitido que a string que você quer contar na frase contenha mais de um caractere, já que o enunciado sugere que você está procurando conferir única letra; ademais, há a possibilidade de a função receber coisas como números, símbolos, e tudo o mais (seria fácil conferir isso via RegExp, mas parece fora do escopo da questão, então não vamos levar isso em questão).

Juntando essas considerações, talvez seu código fique mais parecido com isso:

function vezesLetraAparece(frase, string) {

  if(string.length > 1) {

    console.warn("Você inseriu mais de uma letra!");

  }

  return ((frase.toLowerCase()).split("string")).length() - 1;

}

Ah, e no caso de você não tiver acesso à função split() (talvez seu professor ainda não tenha ensinado), o que eu faria seria algo do tipo:

function vezesLetraAparece(frase, letra) {

  let contagem = 0;

  for(let i=0; i<frase.length; i++) {

    if(frase[i] === letra) contagem++;

  }

  return contagem;

}

Ainda há algumas outras formas de se resolver o problema, mas acho que isso já é o bastante, não é? Espero ter ajudado!

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta
Tire dúvidas com IA
Resposta na hora da Minerva IA
Enviar dúvida
Minerva IA
do Profes
Respostas na hora
100% no WhatsApp
Envie suas dúvidas pelo App. Baixe agora
Prefere professores para aulas particulares ou resolução de atividades?
Aulas particulares
Encontre um professor para combinar e agendar aulas particulares Buscar professor
Tarefas
Envie sua atividade, anexe os arquivos e receba ofertas dos professores Enviar tarefa