Solucionado: Criando um array fizzbuzz
0
0

Solucionado: Criando um array fizzbuzz

Saiba como solucionar um dos desafios mais comuns em entrevistas técnicas, o array FizzBuzz

Gabriel e Pedro
4 min
0
0

👋 Opa, Gabriel e Pedro aqui e seja bem-vindo para mais um episódio da nossa newsletter semanal, a Challenge House.

Toda quinta-feira, temos a solução de um desafio JavaScript que foi divulgado no início da semana.Vem com a gente que lá vem história...


🏠 Challenge House sendo desvendada

Email image

No início da semana, compartilhamos o Desafio JS: Criando um array fizzbuzz.

Sem mais demora, a solução em formato de código é essa aqui:

const fizzbuzzer = (n) => {
const array = [];
for (var i=1; i <= n; i++){
if (i % 15 == 0)
array.push("FizzBuzz");
else if (i % 3 == 0)
array.push("Fizz");
else if (i % 5 == 0)
array.push("Buzz");
else
array.push(i);
}
return array;
}

🌀 Ao vivo e à cores

Não acredita que o código ali em cima funciona? Criamos uma execução dele no CodePen para você poder ver de perto. Basta rodar 👇


🤓 Por que na minha máquina funciona?

Não adianta viver de CTRL + C e CTRL + Z. É preciso entender o motivo daquele código rodar da forma correta. Vamos lá?

O nosso código começa com a criação de uma função que aceita um parâmetro N. Esse parâmetro é uma variável que guarda o valor máximo da nossa iteração.

Logo após, dentro da nossa função criamos o nosso array. Que será o responsável por guardar cada valor da nossa iteração. Aqui há um detalhe interessante. Estamos declarando o nosso array como uma constante. Mas como isso funciona se iremos mudar o valor do array na nossa iteração ? Isso acontece, pois quando criamos um array estamos criando uma referência na memória para guardar os valores que serão armazenados. É essa referência que é uma constante os valores dentro do array podem mudar sem problemas.

Por fim, começamos nossa iteração com um simples loop for. Lembrando que o loop for funciona da seguinte forma:

O primeiro parâmetro irá ser a variável de controle, ou seja inicializamos uma variável que será a responsável por controlar o loop. Nesse caso podemos dizer que ela é o índex da nossa iteração. Logo após o segundo parâmetro irá tratar a condição de controle, ou seja, irá pegar a variável que pegamos no argumento anterior e irá em todo loop confirmar se a condição foi atingida e se sim impedirá que o loop rode novamente. O último argumento do nosso loop for será o incrementador, esse responsável por a cada loop modificar a nossa variável de controle para outro valor. Assim teremos uma interação de 1 a n. Como o desejado.

Dentro da nossa interação temos a verificação se os números são divisíveis por 3, 5 e 15. Verificamos a divisibilidade por 15 porque um número é divisível por 3 e 5 ao mesmo tempo quando ele é divisível por 15. Para fazer essa verificação nosso conjunto de ifs testa o resultado da operação usando o operador de divisão %. A porcentagem como operador divide e o resultado é na verdade o resto da divisão. Se uma divisão não tem resto isso significa que um número é divisível por outro.

Então, verificando as condições usamos a High Order Function push. Que “empurra” um valor para o array, o completando a cada interação com o valor devido.

É interessante notar que essa é uma Pure Function. Ou seja uma função que recebe um valor e toda vez que o mesmo valor for imputado o resultado da função será o mesmo, sem causar mudanças externas a função. Esse conceito de Pure Function é um conceito importante pois manter suas funções puras é uma forma de manter seu código mais limpo e performático!


Se você pensou de outra maneira e fez o um código diferente, iríamos adorar saber a solução também. Sinta-se a vontade para chamar a gente no instagram da Challenge House ou responder por email esta newsletter.


  1. ❤️ Compartilhar com os amigos - é com a sua ajuda que iremos levar o Challenge House para cada vez mais pessoas.

Compartilhar conteúdo

  2. ✉️ Se inscrever na nossa newsletter - se ainda não é, iremos ficar muito felizes com a sua inscrição.

Seguir meu Canal

Até segunda-feira,

Gabriel e Pedro 👋