项目作者: 1TATO

项目描述 :
JS Rocketseat challenge exercises
高级语言: JavaScript
项目地址: git://github.com/1TATO/rocketseat-starter.git
创建时间: 2020-05-23T00:13:21Z
项目社区:https://github.com/1TATO/rocketseat-starter

开源协议:

下载


These are the final exercises of Rocketseat Javascript/ES6 course

Exercícios Módulo 01: Introdução JavaScript :+1:

:one: exercise :pencil:

Crie uma função que dado o objeto a seguir:

  1. var endereco = {
  2. rua: "Rua dos pinheiros",
  3. numero: 1293,
  4. bairro: "Centro",
  5. cidade: "São Paulo",
  6. uf: "SP"
  7. };

Retorne o seguinte conteúdo:

O usuário mora em São Paulo / SP, no bairro Centro, na rua "Rua dos Pinheiros" com nº 1293.

:two: exercise :pencil:

Crie uma função que dado um intervalo (entre x e y) exiba todos número pares:

  1. function pares(x, y) {
  2. // código aqui
  3. }
  4. pares(32, 321);

:three: exercise :pencil:

Escreva uma função que verifique se o vetor de habilidades passado possui a habilidade “Javascript”
e retorna um booleano true/false caso exista ou não.

  1. function temHabilidade(skills) {
  2. // código aqui
  3. }
  4. var skills = ["Javascript", "ReactJS", "React Native"];
  5. temHabilidade(skills); // true ou false

:four: exercise :pencil:

Escreva uma função que dado um total de anos de estudo retorna o quão experiente o usuário é:

  1. function experiencia(anos) {
  2. // código aqui
  3. }
  4. var anosEstudo = 7;
  5. experiencia(anosEstudo);

// De 0-1 ano: Iniciante
// De 1-3 anos: Intermediário
// De 3-6 anos: Avançado
// De 7 acima: Jedi Master

:five: exercise :pencil:

Dado o seguinte vetor de objetos:

  1. var usuarios = [
  2. {
  3. nome: "Diego",
  4. habilidades: ["Javascript", "ReactJS", "Redux"]
  5. },
  6. {
  7. nome: "Gabriel",
  8. habilidades: ["VueJS", "Ruby on Rails", "Elixir"]
  9. }
  10. ];

Escreva uma função que produza o seguinte resultado:

  1. O Diego possui as habilidades: Javascript, ReactJS, Redux
  2. O Gabriel possui as habilidades: VueJS, Ruby on Rails, Elixir

Exercícios Módulo 02: DOM Manipulation :+1:

:one: exercise :pencil:

Crie um botão que ao ser clicado cria um novo elemento em tela com a forma de um quadrado
vermelho com 100px de altura e largura. Sempre que o botão for clicado um novo quadrado deve
aparecer na tela.

:two: exercise :pencil:

Utilizando o resultado do primeiro desafio, toda vez que o usuário passar o mouse por cima de
algum quadrado troque sua cor para uma cor aleatória gerada pela função abaixo:

  1. function getRandomColor() {
  2. var letters = "0123456789ABCDEF";
  3. var color = "#";
  4. for (var i = 0; i < 6; i++) {
  5. color += letters[Math.floor(Math.random() * 16)];
  6. }
  7. return color;
  8. }
  9. var newColor = getRandomColor(); // #E943F0

:three: exercise :pencil:

A partir do seguinte vetor:

var nomes = ["Diego", "Gabriel", "Lucas"];

Preencha uma lista <ul> no HTML com os itens da seguinte forma:

  • Diego
  • Gabriel
  • Lucas

:four: exercise :pencil:

Seguindo o resultado do exercício anterior adicione um input em tela e um botão como a seguir:

  1. <input type="text" name="nome">
  2. <button onClick="adicionar()">Adicionar</button>

Ao clicar no botão, a função adicionar() deve ser disparada adicionando um novo item a lista de
nomes baseado no nome preenchido no input e renderizando o novo item em tela juntos aos
demais itens anteriores. Além disso, o conteúdo do input deve ser apagado após o clique.

Exercícios Módulo 03: TODO App :+1:

Criado um app de TODOs, com as funcionalidades de criar e excluir itens. Os itens são armazenados no localStorage.

Exercícios Módulo 04: DOM Manipulation :+1:

:one: exercise :pencil:

Crie uma função que recebe a idade de um usuário e retorna uma Promise que depois de 2
segundos retornará se usuário é maior ou não que 18 anos. Se o usuário ter mais que 18 anos de
idade o resultado deve cair no .then, caso contrário, no .catch

  1. function checaIdade(idade) {
  2. // Retornar uma promise
  3. }
  4. checaIdade(20)
  5. .then(function() {
  6. console.log("Maior que 18");
  7. })
  8. .catch(function() {
  9. console.log("Menor que 18");
  10. });

:two: exercise :pencil:

Crie uma tela com um que deve receber o nome de um usuário no Github. Após digitar o
nome do usuário e clicar no botão buscar a aplicação deve buscar pela API do Github (conforme
URL abaixo) os dados de repositórios do usuário e mostrá-los em tela:

URL de exemplo: https://api.github.com/users/diego3g/repos
Basta alterar “diego3g” pelo nome do usuário.

  1. <input type="text" name="user">
  2. <button onclick="">Adicionar</button>

Depois de preencher o input e adicionar, a seguinte lista deve aparecer abaixo:

  1. <ul>
  2. <li>repo1</li>
  3. <li>repo2</li>
  4. <li>repo3</li>
  5. <li>repo4</li>
  6. <li>repo5</li>
  7. </ul>

:three: exercise :pencil:

A partir do resultado do exemplo anterior adicione um indicador de carregamento em tela no lugar
da lista apenas enquanto a requisição estiver acontecendo:

  1. <li>Carregando...</li>

Além disso, adicione uma mensagem de erro em tela caso o usuário no Github não exista.
Dica: Quando o usuário não existe, a requisição irá cair no .catch com código de erro 404.

Javascript ES6 Exercises

Exercícios Módulo 01: Conceitos :+1:

:one: exercise :pencil:

Para testar seus conhecimentos com classes, crie uma classe com nome “Admin”, essa classe deve
extender uma segunda classe chamada “Usuario”.
A classe usuário deve receber dois parâmetros no método construtor, e-mail e senha, e anotá-los
em propriedades da classe. A classe “Admin” por sua vez não recebe parâmetros mas deve
repassar os parâmetros de e-mail e senha à classe pai e marcar uma propriedade “admin” como
true na classe.
Agora com suas classes formatadas, adicione um método na classe Usuario chamado isAdmin que
retorna se o usuário é administrador ou não baseado na propriedade admin ser true ou não.

  1. const User1 = new Usuario('email@teste.com', 'senha123');
  2. const Adm1 = new Admin('email@teste.com', 'senha123');
  3. console.log(User1.isAdmin()) // false
  4. console.log(Adm1.isAdmin()) // true

:two: exercise :pencil:

A partir do seguinte vetor e utilizando os métodos de array (map, reduce, filter e find):

  1. const usuarios = [
  2. { nome: 'Diego', idade: 23, empresa: 'Rocketseat' },
  3. { nome: 'Gabriel', idade: 15, empresa: 'Rocketseat' },
  4. { nome: 'Lucas', idade: 30, empresa: 'Facebook' },
  5. ];

2.1 Utilizando map:
Crie uma variável que contenha todas idades dos usuários: [23, 15, 30]

2.2 Utilizando filter:
Crie uma variáveis que tenha apenas os usuários que trabalham na Rocketseat e com mais de 18
anos: [{ nome: 'Diego', idade: 23, empresa: 'Rocketseat' }]

2.3 Utilizando find:
Crie uma variável que procura por um usuário que trabalhe na empresa Google: undefined

2.4 Unindo opreações:
Multiplique a idade de todos usuários por dois e depois realize um filtro nos usuários que possuem
no máximo 50 anos:

  1. // Resultado:
  2. [
  3. { nome: 'Diego', idade: 46, empresa: 'Rocketseat' },
  4. { nome: 'Gabriel', idade: 30, empresa: 'Rocketseat' },
  5. ]

:three: exercise :pencil:
Converta as funções nos seguintes trechos de código em Arrow Functions:

  1. // 3.1
  2. const arr = [1, 2, 3, 4, 5];
  3. arr.map(function(item) {
  4. return item + 10;
  5. });
  1. // 3.2
  2. // Dica: Utilize uma constante pra function
  3. const usuario = { nome: 'Diego', idade: 23 };
  4. function mostraIdade(usuario) {
  5. return usuario.idade;
  6. }
  7. mostraIdade(usuario);
  1. // 3.3
  2. // Dica: Utilize uma constante pra function
  3. const nome = "Diego";
  4. const idade = 23;
  5. function mostraUsuario(nome = 'Diego', idade = 18) {
  6. return { nome, idade };
  7. }
  8. mostraUsuario(nome, idade);
  9. mostraUsuario(nome);
  1. // 3.4
  2. const promise = function() {
  3. return new Promise(function(resolve, reject) {
  4. return resolve();
  5. })
  6. }

:four: exercise :pencil:

  1. //4.1 Desestruturação simples a partir do seguinte objeto:
  2. const empresa = {
  3. nome: 'Rocketseat',
  4. endereco: {
  5. cidade: 'Rio do Sul',
  6. estado: 'SC',
  7. }
  8. };

Utilize a desestruturação para transformar as propriedades nome, cidade e estado em variáveis, no
fim deve ser possível fazer o seguinte:

  1. console.log(nome); // Rocketseat
  2. console.log(cidade); // Rio do Sul
  3. console.log(estado); // SC
  1. //4.2 Desestruturação em parâmetros na seguinte função:
  2. function mostraInfo(usuario) {
  3. return `${usuario.nome} tem ${usuario.idade} anos.`;
  4. }
  5. mostraInfo({ nome: 'Diego', idade: 23 })

Utilize a desestruturação nos parâmetros da função para buscar o nome e idade do usuário
separadamente e a função poder retornar apenas:

return${nome} tem ${idade} anos.;

:five: exercise :pencil:

Utilizando o operador de rest/spread (…) realize as seguintes operações:

5.1 Rest

A partir do array: const arr = [1, 2, 3, 4, 5, 6], defina uma variável x que recebe a primeira
posição do vetor e outra variável y que recebe todo restante dos dados.

  1. console.log(x); // 1
  2. console.log(y); // [2, 3, 4, 5, 6]

Crie uma função que recebe inúmeros parâmetros e retorna a soma de todos eles:

  1. // function soma...
  2. console.log(soma(1, 2, 3, 4, 5, 6)); // 21
  3. console.log(soma(1, 2)); // 3

5.2 Spread

A partir do objeto e utilizando o operador spread:

  1. const usuario = {
  2. nome: 'Diego',
  3. idade: 23,
  4. endereco: {
  5. cidade: 'Rio do Sul',
  6. uf: 'SC',
  7. pais: 'Brasil',
  8. }
  9. };

Crie uma variável usuario2 que contenha todos os dados do usuário porém com nome Gabriel.
Crie uma variável usuario3 que contenha todos os dados do usuário porém com cidade Lontras.

:six: exercise :pencil:

Converta o seguinte trecho de código utilizando Template Literals:

  1. const usuario = 'Diego';
  2. const idade = 23;
  3. console.log('O usuário ' + usuario + ' possui ' + idade + ' anos');

:seven: exercise :pencil:

Utilize a sintaxe curta de objetos (Object Short Syntax) no seguinte objeto:

  1. const nome = 'Diego';
  2. const idade = 23;
  3. const usuario = {
  4. nome: nome,
  5. idade: idade,
  6. cidade: 'Rio do Sul',
  7. };

Exercícios Módulo 02: Webpack Server :+1:

:one: exercise :pencil:

Crie um arquivo chamado functions.js com o seguinte conteúdo:

  1. export const idade = 23;
  2. export default class Usuario {
  3. static info() {
  4. console.log('Apenas teste');
  5. }
  6. }

1.1
Agora em seu arquivo principal import apenas a classe Usuario renomeando-a para ClasseUsuario
e chame a função info();

1.2
Em seu arquivo principal importe a variável de idade e exiba a mesma em tela;

1.3
Em seu arquivo principal importe tanto a classe quanto a variável idade e renomeie a variável idade
para IdadeUsuario.

Exercícios Módulo 03: Async/await :+1:

Transforme os seguintes trechos de código utilizando async/await:

  1. // Função delay aciona o .then após 1s
  2. const delay = () => new Promise(resolve => setTimeout(resolve, 1000));
  3. function umPorSegundo() {
  4. delay().then(() => {
  5. console.log('1s');
  6. delay().then(() => {
  7. console.log('2s');
  8. delay().then(() => {
  9. console.log('3s');
  10. });
  11. })
  12. });
  13. }
  14. umPorSegundo();
  1. import axios from 'axios';
  2. function getUserFromGithub(user) {
  3. axios.get(`https://api.github.com/users/${user}`)
  4. .then(response => {
  5. console.log(response.data);
  6. })
  7. .catch(err => {
  8. console.log('Usuário não existe');
  9. })
  10. }
  11. getUserFromGithub('diego3g');
  12. getUserFromGithub('diego3g124123');
  1. class Github {
  2. static getRepositories(repo) {
  3. axios.get(`https://api.github.com/repos/${repo}`)
  4. .then(response => {
  5. console.log(response.data);
  6. })
  7. .catch(err => {
  8. console.log('Repositório não existe');
  9. })
  10. }
  11. }
  12. Github.getRepositories('rocketseat/rocketseat.com.br');
  13. Github.getRepositories('rocketseat/dslkvmskv');
  1. const buscaUsuario = usuario => {
  2. axios.get(`https://api.github.com/users/${user}`)
  3. .then(response => {
  4. console.log(response.data);
  5. })
  6. .catch(err => {
  7. console.log('Usuário não existe');
  8. });
  9. }
  10. buscaUsuario('diego3g');