Mais uma lista de atividades concluídas :)
//ATIVIDADE 1
const pessoa = {
nome: 'Saturn',
notas: [9, 5.5, 7, 8],
calcularMediaNotas: function(){
const somaNotas = this.notas.reduce((soma, nota) => soma + nota, 0)
const media = somaNotas / this.notas.length;
return media.toFixed(2);
},
calcularDesempenho: function(){
const media = this.calcularMediaNotas();
if(media >= 9) {
return `Desempenho excelente, media: ${media}!`
} else if (media >= 7.5 && media <= 8.9) {
return `Bom desempenho, media: ${media}!`
} else if (media >= 6 && media <= 7.5 ){
return `Desempenho regular, media: ${media}!`
} else {
return `Desempenho insuficiente, media: ${media}!`
}
}
}
console.log(pessoa.calcularMediaNotas()); //saída: 7.38
console.log(pessoa.calcularDesempenho()); //saída: Desempenho regular, media: 7.38!
//ATIVIDADE 2
const carro = {
marca: 'Hyundai',
modelo: 'HB20',
ano: 2022,
cor: 'Branco'
}
for(let infosCarro in carro) {
console.log(`${infosCarro}: ${carro[infosCarro]}`)
}
carro.valor = 'R$ 60.733'
//OBJ CARRO ATUALIZADO
for(let infosCarro in carro) {
console.log(`${infosCarro}: ${carro[infosCarro]}`);
}
//ATIVIDADE 3
//aidicionando a propriedade que mostra se o carro está desligado ou ligado
carro.estaLigado = true;
//adicinando a função que liga o carro
carro.ligar = function() {
if (this.estaLigado) {
return `O carro já está ligado!`;
} else {
this.estaLigado = true;
return `O carro foi ligado com sucesso!`;
}
}
//adicionando a função que desliga o carro
carro.desligar = function() {
if(this.estaLigado) {
this.estaLigado = false;
return `O carro foi desligado com sucesso!`;
} else {
return `O carro já está desligado!`;
}
}
//adicionando a propridade que obtém os detalhes do nosso carro
carro.obterDetalhes = function() {
return (`Marca: ${this.marca} \n` +
`Modelo: ${this.modelo} \n` +
`Ano: ${this.ano} \n` +
`Cor: ${this.cor} \n` +
`Ligado: ${this.estaLigado} \n`)
}
//definindo as funções como NÃO enumeráveis
Object.defineProperty(carro, 'obterDetalhes', { enumerable: false });
Object.defineProperty(carro, 'desligar', { enumerable: false });
Object.defineProperty(carro, 'ligar', { enumerable: false });
console.log(carro.desligar()); //saída: O carro foi desligado com sucesso!
console.log(carro.desligar()) //saída: O carro já está desligado!
console.log(carro.ligar()); //saída: O carro foi ligado com sucesso!
console.log(carro.obterDetalhes()); //saída:
// Marca: Hyundai
// Modelo: HB20
// Ano: 2022
// Cor: Branco
// Ligado: true
//ATIVIDADE 4
//definindo a chave e valor de "placa"
carro.placa = 'NO HESI'
Object.defineProperty(carro, 'placa', { enumerable: false })
console.log('PROPRIEDADES ENUMERÁVEIS DO CARRO:')
for(let infosCarro in carro) {
console.log(`${infosCarro}: ${carro[infosCarro]}`)
}
console.log(Object.keys(carro)); //saída: [ 'marca', 'modelo', 'ano', 'cor', 'valor', 'estaLigado' ]
console.log(Object.keys(carro.placa)); //saída:['0', '1', '2', '3', '4', '5', '6'] ?
//ATIVIDADE 5
const carroNovo = {
marca: 'McLaren',
modelo: '750S',
ano: 2024,
cor: 'Roxa'
}
const carroComNovosDetalhes = { ...carro, ...carroNovo };
console.log(carroComNovosDetalhes); //saída:
// marca: 'McLaren',
// modelo: '750S',
// ano: 2024,
// cor: 'Roxa',
// valor: 'R$ 60.733',
// estaLigado: true
//como podemos observar, as chaves com a mesma indentificação acabaram por se sobrepor, sobrando do obj carro
//apenas aqueles que continham chaves diferentes de carroNovo
carroComNovosDetalhes.modelo = 'F1'
console.log(carroComNovosDetalhes); //saída:
// marca: 'McLaren',
// modelo: 'F1',
// ano: 2024,
// cor: 'Roxa',
// valor: 'R$ 60.733',
// estaLigado: true