├── .github ├── logo.png └── logo.svg ├── .vscode └── launch.json ├── ExerciciosModulo1 └── ExerciciosModulo1.js ├── ExerciciosModulo2 └── ExerciciosModulo2.html ├── ExerciciosModulo3 ├── AulaModulo3.html └── todo.js ├── ExerciciosModulo4 ├── ES6RestSpread.js ├── ExercerciciosModulo4.html └── ExerciciosModulo4.js ├── LICENSE.md └── README.md /.github/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DanielObara/Javascript-Rocketseat/4bae4f288bd11cda1ffe94de7ce2e3daee65939d/.github/logo.png -------------------------------------------------------------------------------- /.github/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Passe o mouse para ver as descrições dos atributos existentes. 4 | // Para obter mais informações, visite: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "chrome", 9 | "request": "launch", 10 | "name": "Launch Chrome against localhost", 11 | "url": "http://localhost:8080", 12 | "webRoot": "${workspaceFolder}" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /ExerciciosModulo1/ExerciciosModulo1.js: -------------------------------------------------------------------------------- 1 | //Exercicio 1: 2 | var endereco = { 3 | rua: "Rua dos pinheiros", 4 | numero: 1293, 5 | bairro: "Centro", 6 | cidade: "São Paulo", 7 | uf: "SP" 8 | }; 9 | const { rua, numero, bairro, cidade, uf } = endereco; 10 | console.log(`O usuário mora em ${cidade} / ${uf}, no bairro 11 | ${bairro}, na rua "${rua}" com nº ${numero}.`); 12 | 13 | /*--------------------------------------------------------------------------------------------------*/ 14 | //Exercicio 2: 15 | const pares = (x, y) => { 16 | for (var i = x; i <= y; i++) { 17 | if (i % 2 === 0) { 18 | console.log(i); 19 | } 20 | } 21 | }; 22 | pares(1, 20); 23 | /*--------------------------------------------------------------------------------------------------*/ 24 | //Exercicio 3: 25 | const validaSkill = skills => { 26 | if (skills.indexOf("Javascript") !== -1) { 27 | return console.log("Tem a skill"); 28 | } else { 29 | console.log("Não tem a skill"); 30 | } 31 | }; 32 | var skills = ["Boostrap", "React", "CSS", "HTML"]; 33 | validaSkill(skills); 34 | validaSkill([...skills, "Javascript"]); 35 | /*--------------------------------------------------------------------------------------------------*/ 36 | //Exercício 4: 37 | const calcExp = age => { 38 | switch (true) { 39 | case age >= 0 && age <= 1: 40 | console.log(`Você tem ${age} anos de exp, seu nível é: Iniciante`); 41 | break; 42 | case age >= 1 && age <= 3: 43 | console.log(`Você tem ${age} anos de exp, seu nível 44 | é: Intermediário`); 45 | break; 46 | case age >= 3 && age <= 6: 47 | console.log(`Você tem 48 | ${age} anos de exp, seu nível é: Avançado`); 49 | break; 50 | default: 51 | console.log(`Você 52 | tem ${age} anos de exp, seu nível é: Jedi Master `); 53 | break; 54 | } 55 | }; 56 | calcExp(1); 57 | calcExp(3); 58 | calcExp(6); 59 | calcExp(10); 60 | /*--------------------------------------------------------------------------------------------------*/ 61 | //Exercício 5 62 | 63 | var usuarios = [ 64 | { 65 | nome: "Diego", 66 | habilidades: ["Javascript", "ReactJS", "Redux"] 67 | }, 68 | { nome: "Gabriel", habilidades: ["VueJS", "Ruby on Rails", "Elixir"] } 69 | ]; 70 | 71 | const showMessage = usuarios => { 72 | for (const user of usuarios) { 73 | const { nome, habilidades } = user; 74 | console.log(`O ${nome} possui as habilidades: ${habilidades.join(", ")}`); 75 | } 76 | }; 77 | -------------------------------------------------------------------------------- /ExerciciosModulo2/ExerciciosModulo2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Page Title 7 | 8 | 9 | 10 |
11 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /ExerciciosModulo3/AulaModulo3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Curso Javascript mdulo 3 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ExerciciosModulo3/todo.js: -------------------------------------------------------------------------------- 1 | var listElement = document.querySelector("#app ul"); 2 | var inputElement = document.querySelector("#app input"); 3 | var buttonElement = document.querySelector("#app button"); 4 | 5 | //Preenchendo a lista de Todos pegando da storage e caso esteja vazio, inserir um Array vazio 6 | var todos = JSON.parse(localStorage.getItem("list_todos")) || []; 7 | 8 | //Função que renderiza os todos. 9 | function renderTodos() { 10 | //limpando o html antes de renderizar novamente 11 | //caso não limpassemos e salvasse um novo todo, toda a lista se repetiria. 12 | listElement.innerHTML = ""; 13 | for (todo of todos) { 14 | console.log("TCL: renderTodos -> todo", todo); 15 | //Criando elemento li 16 | var todoElement = document.createElement("li"); 17 | 18 | //Criando o texto do li 19 | var todoText = document.createTextNode(todo); 20 | 21 | //Criando o elemento link a 22 | var linkElement = document.createElement("a"); 23 | linkElement.setAttribute("href", "#"); 24 | 25 | var pos = todos.indexOf(todo); 26 | 27 | linkElement.setAttribute("onclick", "deleteTodo(" + pos + ")"); 28 | 29 | //Criando to texto do link a 30 | var linkText = document.createTextNode("Exluir"); 31 | 32 | linkElement.appendChild(linkText); 33 | 34 | todoElement.appendChild(todoText); 35 | 36 | todoElement.appendChild(linkElement); 37 | 38 | listElement.appendChild(todoElement); 39 | } 40 | } 41 | renderTodos(); 42 | function addTodo() { 43 | var todoText = inputElement.value; 44 | console.log("TCL: addTodo -> todoText", todoText); 45 | todos.push(todoText); 46 | inputElement.value = ""; 47 | renderTodos(); 48 | savaToStorage(); 49 | } 50 | 51 | buttonElement.onclick = addTodo; 52 | 53 | function deleteTodo(pos) { 54 | todos.splice(pos, 1); 55 | renderTodos(); 56 | savaToStorage(); 57 | } 58 | 59 | function savaToStorage() { 60 | localStorage.setItem("list_todos", JSON.stringify(todos)); 61 | } 62 | -------------------------------------------------------------------------------- /ExerciciosModulo4/ES6RestSpread.js: -------------------------------------------------------------------------------- 1 | 2 | const user = { 3 | nomes: ["Daniel", "Joãos", "Brunos", "Zyad", "Guilherme"], 4 | empresa: { 5 | nome: "WeeCode", 6 | site: "www.weecode.com.br" 7 | } 8 | }; 9 | // Usando desestruturação do obj no primeiro nivel 10 | const { nomes } = user; 11 | console.log(nomes); // ["Daniel", "Joãos", "Bruno", "Zyad", "Guilherme"] 12 | 13 | // É o mesmo que: 14 | const nomes1 = user.nomes; 15 | console.log(nomes1); // ["Daniel", "Joãos", "Bruno", "Zyad", "Guilherme"] 16 | // Atribuindo a outroa const no momento de desestruturação 17 | const { nomes: nomes2 } = user; 18 | 19 | // Ops.. esqueci do Cristão pois ele está de férias. 20 | // Aplicando o Rest em um array 21 | console.log([...nomes2, "Cristian"]); 22 | 23 | // Ou assim com Spread e rest ao mesmo tempo 24 | const novoArr = [...nomes2, "Cristian"]; 25 | console.log(novoArr); 26 | 27 | // Usando desestruturação do obj no segundo nivel (Um 'atributo' objeto dentro de um objeto) 28 | const { 29 | empresa: { site } 30 | } = user; 31 | console.log(site); // www.weecode.com.br -------------------------------------------------------------------------------- /ExerciciosModulo4/ExercerciciosModulo4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 |
11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /ExerciciosModulo4/ExerciciosModulo4.js: -------------------------------------------------------------------------------- 1 | const isMajor = idade => { 2 | return new Promise((resolve, reject) => { 3 | setTimeout(() => { 4 | idade >= 18 ? resolve() : reject(); 5 | }, 2000); 6 | }); 7 | }; 8 | 9 | isMajor(8) 10 | .then(function() { 11 | console.log("Maior que 18"); 12 | }) 13 | .catch(function() { 14 | console.log("Menor que 18"); 15 | }); 16 | 17 | var inputName = document.getElementById("user"); 18 | var dataList = document.querySelector("ul"); 19 | const getUserRepo = name => { 20 | var user = inputName.value; 21 | if (!user) { 22 | renderError(); 23 | alert("Preencha o campo"); 24 | } 25 | renderLoading(); 26 | axios 27 | .get(`https://api.github.com/users/${user}/repos`) 28 | .then(response => { 29 | fillList(response.data); 30 | }) 31 | .catch(error => { 32 | alert("Não foi possível efetuar a busca!"); 33 | renderError(error); 34 | }); 35 | }; 36 | 37 | function renderLoading(loading) { 38 | dataList.innerHTML = ""; 39 | var textElement = document.createTextNode("Carregando..."); 40 | var loadingElement = document.createElement("li"); 41 | loadingElement.appendChild(textElement); 42 | dataList.appendChild(loadingElement); 43 | } 44 | 45 | function renderError(loading) { 46 | dataList.innerHTML = ""; 47 | var user = inputName.value; 48 | var msgUserEmpty = !user ? "Preencha o usuário" : "Erro ao efetuar busca"; 49 | 50 | var textElement = document.createTextNode(msgUserEmpty); 51 | var errorElement = document.createElement("li"); 52 | errorElement.style.color = "#F00"; 53 | errorElement.appendChild(textElement); 54 | dataList.appendChild(errorElement); 55 | } 56 | 57 | const fillList = repositorios => { 58 | console.log("TCL: repositorios", repositorios); 59 | dataList.innerHTML = ""; 60 | 61 | for (repo of repositorios) { 62 | const reponame = document.createTextNode(repo.name); 63 | const repoItem = document.createElement("li"); 64 | 65 | repoItem.appendChild(reponame); 66 | dataList.appendChild(repoItem); 67 | } 68 | }; 69 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright 2019 - Rocketseat 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | Starter 3 |

4 | 5 |

6 | JS Rocketseat Challenge Excercises :book: 7 |

8 | 9 |

This project is just the final exercises of each Rocketseat Javascript course module JavaScript Starter 🎓 10 |

11 | 12 |

13 | 14 | GitHub language count 15 | 16 | 17 | Made by DanielObara 18 | 19 | 20 | License 21 | 22 | 23 | Repository size 24 | 25 | 26 | 27 | GitHub last commit 28 | 29 | 30 | Stargazers 31 | 32 |

33 | 34 | ### Exercícios Módulo 01 - Introdução JavaScript :point_up: 35 | 36 | :one:** exercício** :pencil: 37 | 38 | Crie uma função que dado o objeto a seguir: 39 | 40 | ``` 41 | var endereco = { 42 | rua: "Rua dos pinheiros", 43 | numero: 1293, 44 | bairro: "Centro", 45 | cidade: "São Paulo", 46 | uf: "SP" 47 | }; 48 | ``` 49 | 50 | Retorne o seguinte conteúdo: 51 | 52 | `O usuário mora em São Paulo / SP, no bairro Centro, na rua "Rua dos Pinheiros" com nº 1293.` 53 | 54 | :two:** exercício** :pencil: 55 | 56 | Crie uma função que dado um intervalo (entre x e y) exiba todos número pares: 57 | 58 | ``` 59 | function pares(x, y) { 60 | // código aqui 61 | } 62 | pares(32, 321); 63 | ``` 64 | 65 | :three:** exercício** :pencil: 66 | 67 | Escreva uma função que verifique se o vetor de habilidades passado possui a habilidade "Javascript" 68 | e retorna um booleano true/false caso exista ou não. 69 | 70 | ``` 71 | function temHabilidade(skills) { 72 | // código aqui 73 | } 74 | var skills = ["Javascript", "ReactJS", "React Native"]; 75 | temHabilidade(skills); // true ou false 76 | ``` 77 | 78 | _Dica: para verificar se um vetor contém um valor, utilize o método indexOf._ 79 | 80 | :four:** exercício** :pencil: 81 | 82 | Escreva uma função que dado um total de anos de estudo retorna o quão experiente o usuário é: 83 | 84 | ``` 85 | function experiencia(anos) { 86 | // código aqui 87 | } 88 | var anosEstudo = 7; 89 | experiencia(anosEstudo); 90 | // De 0-1 ano: Iniciante 91 | // De 1-3 anos: Intermediário 92 | // De 3-6 anos: Avançado 93 | // De 7 acima: Jedi Master 94 | ``` 95 | 96 | :five:** exercício** :pencil: 97 | 98 | Dado o seguinte vetor de objetos: 99 | 100 | ``` 101 | var usuarios = [ 102 | { 103 | nome: "Diego", 104 | habilidades: ["Javascript", "ReactJS", "Redux"] 105 | }, 106 | { 107 | nome: "Gabriel", 108 | habilidades: ["VueJS", "Ruby on Rails", "Elixir"] 109 | } 110 | ]; 111 | ``` 112 | 113 | Escreva uma função que produza o seguinte resultado: 114 | 115 | `O Diego possui as habilidades: Javascript, ReactJS, Redux O Gabriel possui as habilidades: VueJS, Ruby on Rails, Elixir` 116 | 117 | _Dica: Para percorrer um vetor você deve utilizar a sintaxe for...of e para unir valores de um array 118 | com um separador utilize o join._ 119 | 120 | ### **Exercícios Módulo 02** - Manipulando a DOM :v: 121 | 122 | :one:** exercício** :pencil: 123 | 124 | Crie um botão que ao ser clicado cria um novo elemento em tela com a forma de um quadrado 125 | vermelho com 100px de altura e largura. Sempre que o botão for clicado um novo quadrado deve 126 | aparecer na tela. 127 | 128 | :two:** exercício** :pencil: 129 | 130 | Utilizando o resultado do primeiro desafio, toda vez que o usuário passar o mouse por cima de 131 | algum quadrado troque sua cor para uma cor aleatória gerada pela função abaixo: 132 | 133 | ``` 134 | function getRandomColor() { 135 | var letters = "0123456789ABCDEF"; 136 | var color = "#"; 137 | for (var i = 0; i < 6; i++) { 138 | color += letters[Math.floor(Math.random() * 16)]; 139 | } 140 | return color; 141 | } 142 | var newColor = getRandomColor(); // #E943F0 143 | ``` 144 | 145 | :three:** exercício** :pencil: 146 | 147 | A partir do seguinte vetor: 148 | 149 | ``` 150 | var nomes = ["Diego", "Gabriel", "Lucas"]; 151 | ``` 152 | 153 | Preencha uma lista ```