Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Resolução

const relatorio = {
  temperatura: 75,
  vibracao: 40,
  pressao: 55,
  nivelRuido: 30
};


function exibirRelatorio (obj) {
  console.log (`Categorias avaliadas:`, Object.keys(obj));
  console.log (`Valores registrados:`, Object.values(obj));
  for (let resultado in obj) {
    obj[resultado] > 50 ? console.log (`${resultado}: ${obj[resultado]} (alerta)`) : console.log (`${resultado}: ${obj[resultado]} (ok)`) 
  }
}


exibirRelatorio (relatorio)
1 resposta
solução!

Oii João,

Ficou muito boa a sua solução. Você aplicou corretamente os métodos de objeto e sua lógica de decisão tá funcionando perfeitamente.

Gostei bastante de você ter encapsulado a lógica dentro de uma função (exibirRelatorio). Isso é uma ótima prática de organização, pois permite que você reuse esse código pra diferentes relatórios no futuro, sem precisar reescrever o loop.

Tenho apenas uma sugestão de legibilidade sobre o uso do operador ternário dentro do laço for...in.

No seu código, você usou o ternário para executar duas ações diferentes (dois console.log distintos):

obj[resultado] > 50 ? console.log(...) : console.log(...)

Embora funcione, uma prática mais comum e limpa é usar o ternário apenas para definir o valor que muda (o status "alerta" ou "ok") e manter um único comando de saída. Isso evita a repetição de código.

Veja como ficaria essa pequena refatoração:

for (let resultado in obj) {
    // o ternário decide apenas o texto do status
    let status = obj[resultado] > 50 ? "(alerta)" : "(ok)";
    
    // o console.log é chamado uma única vez
    console.log(`${resultado}: ${obj[resultado]} ${status}`);
}

Isso torna a manutenção mais fácil: se um dia você quiser mudar a formatação da mensagem, muda em um lugar só.

Parabéns por praticar.

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