Solucionado (ver solução)

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!

Solucionado
(ver solução)
1
resposta

Mais uma sequencia de exercicios

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

const objetoUm = {
    nome: 'tairone',
    idade: 36,
    email: 'tr.silva@hotmail.com.br'
}

const {nome, idade, email} = objetoUm

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.

const linguagens = ['java', 'js', 'pyton'];

const [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.

function somarTudo(...numeros) {
  let soma = 0;

  for (const numero of numeros) {
    soma += numero;
  }

  return soma;
}

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

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

let frutras = ['manga', 'goiaba', 'melancia'];
let frutrasUm = ['banana', 'araça', 'pitanga', 'cupuaçu'];

const frutasDois = [...frutras, ...frutrasUm];

console.log(frutasDois);

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

const nomes = { nome: 'tairone'};
const idades = {idade: 36};

const nomeIdade = {...nomes, ...idades};

console.log(nomeIdade);

// 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.

// fiz de cabeça
function saudacao (nomeUm){
    if (nomeUm != null){
        console.log('Ola, ', nomeUm);        
    } else {
        console.log('Ola visitante');
    }    
}

saudacao('tairone');

// fui ver como fazer com arrow, e vi que dava para mudar os if tambem. Achei mais bonito
let saudacaoArron = (nomeDois) => {
    nomeDois != null ? console.log('Ola, ', nomeDois) : console.log('Ola visitante');
}

saudacaoArron('nathalia');

// Mas logico q dava para ser mais simples ainda :p
let saudacaoSimples = (nomeTres = 'Visitante') => {
    console.log('Ola, ', nomeTres);
}

saudacaoSimples('rosangela');

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

let data = new Date();

console.log(data.toLocaleDateString('pt-br'))

// 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).

//export function somar(num1,num2) {return num1 + num2;}

//import {somar} from './exercicios14.js';

//console.log(somar(1,2));

// 9. Objeto com função construtora
// Crie uma função construtora chamada Livro que receba titulo e autor como parâmetros e os armazene em propriedades do objeto.
// Em seguida, crie dois objetos Livro usando essa função.
// 10. Método no objeto
// Adicione à função construtora Livro uma função chamada descrever, que retorna uma frase com o título e o autor do livro, usando concatenação de strings.

function Livros(titulo, autor){
    this.titulo = titulo;
    this.autor = autor;
    this.descrever = function (){
        return "O titulo do Livro é " + this.titulo + ". Esta obra foi escriata por " + this.autor + '. Boa leitura'
    }
}

const livro1 = new Livros('Biblia', "Jeová");
const livro2 = new Livros('One Piece', 'Eichiro Oda Genio');

console.log(livro1);
console.log(livro1.descrever());
console.log(livro2);
console.log(livro2.descrever());

let livraria = (titulo, autor, faixaEtaria) => ({titulo, autor, faixaEtaria, descrever: function (){
        return "O titulo do Livro é " + titulo + ". Esta obra foi escriata por " + autor + 'e é recomendada para a faixa etaria de ' +  faixaEtaria + '. Boa leitura'
    }});

const livro3 = livraria('Bleach', 'Tite Cubo', '14');
const livro4 = livraria('FullMetal alchemist', ' Hiromu Arakawa', '14');

console.log(livro3)
console.log(livro3.descrever())
console.log(livro4)
console.log(livro4.descrever())

class Biblioteca {
    constructor(titulo, autor, faixaEtaria) {
        Object.assign(this,{titulo, autor, faixaEtaria, descrever: function (){
        return "O titulo do Livro é " + titulo + ". Esta obra foi escriata por " + autor + 'e é recomendada para a faixa etaria de ' +  faixaEtaria + '. Boa leitura'
    }})
    }    
}

const livro5 = new Biblioteca('Trigun', 'Yasuhiro Nightow', '14+')
const livro6 = new Biblioteca('Soul Eater', 'Atsushi Ohkubo', '14')

console.log(livro5)
console.log(livro5.descrever())
console.log(livro6)
console.log(livro6.descrever())
1 resposta
solução!

Oi, Tairone. Tudo bem com você?

Sua resolução dos exercícios está muito bacana. Você não apenas completou as atividades, mas também explorou diferentes formas de resolver o mesmo problema, como vimos na função de saudação onde você partiu de um if/else tradicional e evoluiu para a sintaxe com parâmetro default. Isso demonstra curiosidade genuína em entender as várias maneiras de trabalhar com JavaScript.

Só tem um pequeno detalhe no exercício 4: você nomeou a variável como "frutasDois", mas criou duas variáveis anteriormente chamadas "frutras" e "frutrasUm". Seria mais consistente nomear as frutas com um padrão único, tipo "frutasUm" e "frutasDois" logo no início, deixando o código mais legível.

Quanto aos exercícios 9 e 10, você trouxe três abordagens diferentes: função construtora, arrow function com object shorthand e classe com Object.assign. Muito legal ver essa progressão. O JavaScript permite essas flexibilidades, e você aproveitou bem.

Como você vê a diferença de performance entre essas três formas de criar objetos. Qual delas você preferiria usar em um projeto maior?

Parabéns pelo trabalho e obrigado por compartilhar seu código no fórum. Continue assim, sua dedicação em explorar diferentes soluções é exatamente o mindset certo para evoluir como dev. O fórum está à disposição sempre que precisar.

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