Skip to content

Lista de desafios para praticar vários tópicos de JavaScript, do básico ao avançado.

Notifications You must be signed in to change notification settings

zingarelli/desafios-javascript

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 

Repository files navigation

Desafios de JavaScript

Aqui há uma série de desafios/exercícios propostos pelo Matheus Battisti em seu curso "Desafios de JavaScript - entrevistas e testes técnicos", disponível na Udemy.

A complexidade vai aumentando a cada desafio, começando dos fundamentos até chegar em temas mais avançados como manipulação de DOM e assincronismo.

Lista dos desafios

Segue abaixo o que é pedido em cada desafio. Minha resolução para cada um também se encontra neste repositório, sendo que o nome de cada arquivo é referente ao número do desafio.

Você também pode conferir o repositório do instrutor com todas as soluções.

01 - Conversão de temperatura

Criar um código para conversão de temperatura entre Celsius e Fahrenheit.

Fórmulas:

$$F = (C * \dfrac{9}{5}) + 32$$

$$C = (F - 32)*\dfrac{5}{9}$$

02 - Cálculo de IMC

Criar um código para calcular o Índice de Massa Corporal, recebendo dados de altura e peso.

Fórmula:

$$IMC = peso \div altura^2$$

03 - Concatenação de strings

Receba ou armazene três dados (nome, idade e cidade) e exiba uma mensagem concatenando estes dados.

04 - Área e perímetro de retângulo

Receba ou armazene os valores de lado de um retângulo e exiba os valores de área e perímetro.

05 - Verificação de divisibilidade

Receba ou armazene dois valores (x e y) e informe se x é divisível por y (a divisão dá resto zero).

06 - Classificação de faixa etária

Receba ou armazene um valor de idade e informe a que faixa etária a idade pertence, baseado na classificação abaixo:

  • Criança: 0 a 12 anos;
  • Adolescente: 13 a 17 anos;
  • Adulto: 18 a 59 anos;
  • Idoso: 60+ anos.

Faça a verificação utilizando if/else.

07 - Comparação de números

Crie um programa que compara dois números e informa se o primeiro é maior, menor ou igual ao segundo.

Utilize if/else.

08 - Calculadora

Faça uma calculadora básica, que recebe dois números e a operação entre eles, e retorne o resultado.

Utilize o switch para armazenar a operação escolhida.

Observação: fiz a resolução deste exercício e do próximo em um arquivo HTML, para variar um pouco.

09 - Cálculo de tarifas.

Crie um programa que exibe o valor de uma tarifa dependendo da idade e tipo do usuário (estudante ou regular).

O valor básico é R$2,50. Esse valor é alterado de acordo com a regra a seguir:

  • Menores de 6 anos: grátis, tarifa zero;
  • Estudantes: 50% de desconto;
  • Idosos (60+): 30% de desconto;
  • Regular: tarifa normal.

10 - Somatório 1 a N

Receba/armazene um valor N e exiba o resultado da soma de 1 até N.

O desafio deve ser feito utilizando estruturas de repetição.

11 - Tabuada

Receba/armazena um número N e exiba a tabuada desse número, de 1 até 10.

O desafio deve ser feito utilizando estruturas de repetição.

12 - Números primos

Receba/armazene um valor N e exiba todos os números primos de 1 até N.

O desafio deve ser feito utilizando estruturas de repetição.

13 - Padrão de asteriscos

Faça um código que recebe/armazena um valor N e exibe um padrão de asteriscos (*) até esse valor.

O padrão é: um asterisco na linha 1, dois asteriscos na linha 2, ..., N asteriscos na linha N.

14 - Fibonacci

Receba/armazene um número N e exiba a sequência de Fibonacci até N.

15 - Par ou ímpar

Crie uma função que recebe um valor N como argumento e verifica se é par ou ímpar. Imprima o resultado na tela.

16 - Fatorial

Crie uma função que retorne o fatorial de um número, passado como parâmetro. Imprima o resultado na tela.

17 - Máximo e mínimo

Crie duas funções. Ambas irão receber dois número, N e M, como argumentos. Uma deve retornar o maior valor entre os dois números. A outra deve retornar o menor valor. Imprima os resultados na tela.

18 - Inversão de string

Crie uma função que recebe uma string e retorna seu inverso. Imprima o resultado na tela.

19 - Contagem de vogais

Crie uma função que recebe uma string e retorna a quantidade de vogais no texto recebido. Imprima o resultado na tela.

20 - Palíndromo

Crie uma função que identifica se uma palavra ou frase é palíndromo.

Palíndromo: frase ou palavra que, quando lida em ordem reversa, obtém-se a mesma frase ou palavra.

21 - Array de números aleatórios

Crie uma função que gera um array de números aleatórios. A função recebe como argumento: tamanho do array, valor mínimo e valor máximo dos números.

22 - Elemento mais frequente

Crie uma função que recebe um array como argumento e retorna o elemento que mais aparece no array.

23 - Remoção de elementos repetidos

Crie um programa que recebe um array, remove os elementos que estiverem repetidos e retorna um array sem essas repetições.

24 - Concatenar arrays

Receba dois arrays e retorne um novo array que é a união de todos os elementos dos arrays anteriores.

Exemplo:

Entrada: [0, 1, 2] e [1, 2, 3]
Saída: [0, 1, 2, 1, 2, 3]

25 - Interseção de arrays

Receba dois arrays e retorne um novo array com os elementos que os dois arrays anteriores têm em comum.

26 - Média dos elementos

Crie um programa que recebe um array numérico e retorna a média dos valores desses elementos.

27 - Soma de propriedades de um objeto

Seu programa irá receber um objeto com diversas propriedades contendo valores numéricos. Você deve retornar a soma dos valores dessas propriedades.

28 - Filtrando propriedades

Faça um programa que exiba somente as propriedades de um objeto que o usuário desejar.

Seu programa irá receber um objeto e um array contendo as propriedades desejadas.

Extra: faça uma verificação se a propriedade passada no array existe no objeto.

29 - União de objetos

Seu programa irá receber dois objetos com propriedades variadas. Você deve retornar um novo objeto que contenha todas as propriedades dos dois objetos anteriores.

Dúvida: e se os objetos possuírem uma mesma propriedade?

  • Não tratei este caso. O comportamento do JS é sobrescrever a propriedade caso você passe um novo valor para a propriedade que já existe.

  • Uma solução seria incluir os valores em um array, quando a propriedade já existe.

30 - Manipulando DOM

Este e os próximos exercícios (até o 38) serão manipulação de DOM, então estarão em um arquivo HTML com o JavaScript incluso ao final da tag body

Para o desafio 30, você deve criar um arquivo HTML contendo uma tag h1 e um texto dentro dela. Usando JavaScript, você deve alterar o texto de h1.

31 - Alterando CSS

Crie uma página com vários parágrafos e altere a cor de todos eles de uma vez, utilizando JavaScript.

32 - Alternar classes

Crie uma div que recebe um estilo de background-color. Crie também um botão que, ao ser clicado, adiciona ou remove uma classe a essa div. Essa classe adicional deve alterar o background-color da div.

33 - Adicionar elementos

Crie uma página com várias lis e um botão. Ao ser pressionado, o botão deve criar uma nova li.

34 - Remover elementos

Aproveitando a página criada no desafio 33, adicione um evento de click aos lis para que sejam removidos quando clicados.

35 - Filtro por palavra

Faça uma página que possui uma lista de palavras e um input. Ao digitar uma palavra no input, mantenha somente os itens que coincidem com a palavra digitada.

36 - Mover elementos

Crie uma página com uma lista de itens e dois botões. Adicione as seguintes funcionalidades a esta página:

  • ao clicar em um item, altere a cor de fundo dele, para indicar que foi selecionado;
  • ao pressionar o primeiro botão, mova o item selecionado para cima;
  • ao pressionar o segundo botão, mova o item selecionado para baixo.

37 - Modal

Crie um botão e uma div. Coloque algum conteúdo de texto na div e um botão/ícone de fechar.

O conteúdo da div deverá aparecer na tela somente quando o botão é clicado.

A div deverá sair da tela quando a pessoa clicar fora da área da div ou em seu botão de fechar.

Observação: fiz a resolução utilizando o elemento dialog ao invés de div. O dialog é um elemento HTML específico para este tipo de interação com modal.

38 - Accordion

Crie um "accordion".

Um accordion é uma lista de itens, em que cada item é composto por um título e um conteúdo.

  • Somente os títulos são exibidos na tela, ficando seu respectivo conteúdo oculto.

  • Quando um título é clicado, aí então seu respectivo conteúdo exibido.

  • Somente o conteúdo do título clicado deve ser exibido, ou seja, ao clicar em outro título, o conteúdo do anterior deve ficar novamente oculto e o atual deve ser exibido.

39 - Temporizador personalizado

A partir deste exercício, voltamos a utilizar somente JS, para trabalhar com desafios envolvendo funções callback e assincronicidade.

Para este exercício, crie uma função que recebe dois argumentos: um valor em segundos e uma segunda função (função callback). Sua função deve executar este callback após passado o tempo em segundos.

40 - Clone do Array.map()

Crie uma função que recebe dois argumentos: um array e uma função callback. Este callback será uma função de transformação, que irá realizar alguma operação (por exemplo, dobra o valor de um elemento passado como argumento).

Sua função deve aplicar essa função de transformação em cada elemento do array e retornar um novo array com esse resultado.

41 - Execução condicional com callbacks

Crie uma função que recebe três funções de callback como argumento. O primeiro argumento é um callback que verifica uma condição. O segundo argumento é um callback que será executado caso a verificação retorne verdadeiro. Já o terceiro argumento é um callback a ser executado caso a verificação retorne falso.

42 - Simulação de resposta de API

Crie uma função que irá simular uma resposta a uma API. Esta função recebe um valor e um tempo em milissegundos, e deve retornar uma Promise que devolve o valor após decorrido o tempo.

Extra: crie uma função assíncrona que chama a função anteriormente criada e imprime na tela o valor após a Promise ser resolvida.

43 - Retorno de dados com fetch

Crie uma função que recebe uma URL como parâmetro e retorna uma promise com os dados dessa URL.

Nota: a função fetch() não está disponível por padrão no Node.js. Então, caso utilize esta função, lembre de rodar seu script em uma página HTML.

44 - Cadeia de Promises

Você terá uma função que recebe como parâmetro um array com várias URLs. A função deverá fazer fetch para cada uma das URLs, em sequência, e reunir o resultado delas em um novo array, a ser devolvido como retorno da função.

45 - Retry com Promises

Crie uma função que irá fazer uma chamada a uma API um número X de tentativas, com um delay Y a cada tentativa mal sucedida. A chamada à API deve cessar quando a tentativa for bem sucedida (sucesso na Promise) ou quando o número de tentativas acabar.

A função terá os seguintes parâmetros:

  • função callback com uma chamada a uma API;

  • quantidade de tentativas;

  • delay entre cada tentativa.

About

Lista de desafios para praticar vários tópicos de JavaScript, do básico ao avançado.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published