Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

2
respostas

[Projeto] Lista de exercícios 8 - JavaScript

// 1. Destructuring em objetos
    // Crie um objeto com nome, idade e email. Use destructuring para extrair essas informações em variáveis separadas. 

let usuario = {
    nome: "John Snow",
    idade: 22,
    email:"john.snow@nightswatch.org"
}

let {nome, idade,email} = usuario

console.log(nome, idade, email)



// 2. Destructuring em arrays
    // Crie um array com 3 linguagens de programação. Use destructuring para criar variáveis ling1, ling2 e ling3.

let linguagens = ['JavaScript', 'Python', 'Java']

let [ling1,ling2,ling3] = linguagens

console.log(ling1,ling2,ling3)




// 3. Rest operator em função
    // Crie uma função que receba vários números como parâmetros usando o operador rest (...).
    // Utilize um laço for para somar todos os valores recebidos e retorne o total.


const recebeNumeros = (...numeros) => {
  let somaNumeros = 0;
  for (let numero of numeros) {
    somaNumeros += numero;
  }
  return somaNumeros;
};

console.log(recebeNumeros(1, 2, 3, 4, 5));
 
 // ou
 function somarTudo(...numeros) {
  let soma = 0;

  for (let i = 0; i < numeros.length; i++) {
    soma += numeros[i];
  }

  return soma;
}

console.log(somarTudo(1, 2, 3, 4));




// 4. Spread operator com arrays
    //  Crie dois arrays de frutas e combine-os usando o operador spread.

let frutasVermelhas = ['Morango', 'Amora', 'Mirtilo', 'Cereja']
let frutasVerdes = ['Goiaba','Kiwi','Abacate']
let mix =[...frutasVermelhas,...frutasVerdes]

console.log(mix)



// 5. Spread operator com objetos
   //   Crie dois objetos: um com nome e outro com idade. Combine-os em um terceiro objeto usando spread.

   let o1 = {nome: 'George'}
   let o2 = {idade: 42}
   let perfil = {...o1,...o2}

   console.log(perfil)



// 6. Função com parâmetro default
    // Crie uma função que recebe um nome e imprime "Olá, [nome]". Se o nome não for passado, use "visitante" como valor padrão.

function saudacao (nome = 'visitante') {
    console.log(`Olá, ${nome}`)
}   
saudacao()
saudacao('Diógenes')

// 7. Trabalhando com datas
    // Crie uma variável com a data atual e exiba o dia, mês e ano formatados.

let dataAtual = new Date('2026-10-02T20:00:00-03:00')
console.log('Data formatada (BR):',dataAtual.toLocaleDateString('pt-BR'))
console.log(dataAtual)
const dia = dataAtual.getDate()
const mes = dataAtual.getMonth()+1
const ano = dataAtual.getFullYear()
console.log(`Dia: ${dia}  Mês: ${mes}  Ano: ${ano}`)

// 8. Modularização com export/import
    // Crie uma função simples chamada somar(a, b) e exporte-a como módulo (modo CommonJS ou ES Modules, dependendo do ambiente).

// package.json (somar): 
    //     {
    //   "name": "somar",
    //   "version": "1.0.0",
    //   "description": "",
    //   "main": "app.js",
    //   "scripts": {
    //     "test": "echo \"Error: no test specified\" && exit 1"
    //   },
    //   "keywords": [],
    //   "author": "",
    //   "license": "ISC",
    //   "type": "module"
    // }

// arquivo somar.js: 
    // export function somar(a,b) {
    //     return a + b
    // }

// arquivo app.js:
    // import {somar} from './somar.js'
    // console.log(somar(4,3))

// 9. Destructuring em parâmetros de função
    // Crie um objeto livro com titulo e autor. Crie uma função descreverLivro que recebe o objeto já desestruturado nos parâmetros ({ titulo, autor }) e retorna uma frase como "O livro [titulo] foi escrito por [autor].". Teste chamando a função com dois livros diferentes.

function descreverLivro({titulo, autor}) {
    return `O livro ${titulo} foi escrito por ${autor}`
}

let livro1 = {
    titulo: 'O Alienista',
    autor: 'Machado de Assis'
}
let livro2 = {
    titulo: 'O PRECARIADO: A NOVA CLASSE PERIGOSA',
    autor: 'Guy Stanging'
}

console.log(descreverLivro(livro1))
console.log(descreverLivro(livro2))

// 10. Atualizando objetos com spread
    // A partir do livro1, crie um livro1Atualizado usando spread, alterando apenas o autor para "Edição revisada" e adicionando uma nova propriedade edicao: 2. Exiba livro1 e livro1Atualizado no console e confirme que o original não foi alterado.

let livro1Atualizado = {
    ...livro1,
    autor: 'Edição revisada',
    edicao: 2
}

console.log(livro1);
console.log(livro1Atualizado)
2 respostas

Algo que aprendi é que declarar objetos, arrays com const é uma boa prática.

Oi, Esperidião. Tudo bem com você?

Sua resolução dos exercícios está bem estruturada e demonstra que você compreendeu os conceitos de destructuring, operadores rest e spread, além de datas e modularização. O código funciona corretamente em todos os exercícios, e você ainda teve a sensibilidade de apresentar variações em algumas soluções. Isso é excelente porque mostra que você não está apenas seguindo um padrão, mas explorando diferentes formas de chegar ao mesmo resultado.

A observação que você fez sobre usar const é absolutamente correta. Na prática, é uma boa prática declarar com const quando você não vai reatribuir a variável, e só usar let quando realmente precisar modificar a referência. No seu código, você poderia converter vários desses let iniciais para const, como no primeiro exercício onde o objeto usuario, as linguagens, e até mesmo os objetos de frutas não precisam ser reatribuídos. Isso torna o código mais seguro e deixa claro para quem ler quais variáveis são imutáveis.

Parabéns pelo trabalho compartilhado aqui no fórum. Suas soluções estão funcionando corretamente e você já está absorvendo boas práticas. O fórum está à disposição para quando tiver dúvidas.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!