Foto de Nathalia S.
Nathalia há 3 anos
Enviada pelo
Site

Iniciante em javascript questão de function

Estou com bastante dúvida: Vezes que uma letra aparece Tenho que implementar uma função vezesLetraAparece, que:

1- recebe 2 parâmetros: frase, que deve ser uma string e letra que deve ser outra string;

2- retorne o número de vezes que a letra aparece na frase;

 

function vezesLetraAparece(frase, letra) { (não consigo fazer)

Professor Angelo R.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 3 anos
Contatar Angelo

É bem tranquilo, fiz a algum tempo:

https://codepen.io/angelorubin/pen/qBVWBQW?editors=0011

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
Professor Rafael F.
Respondeu há 3 anos
Contatar Rafael

Bom dia, outro aluno chegou a perguntar sobre a mesma questão. Vou postar a mesma resposta que dei a ele:

 

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
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