Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida sobre objetos

No meu código abaixo, não está apresentando como deveria a última chaves, não entendi o porque do erro. Ele exibe dessa forma "[object Object]."

const personagem = {
    nome: "Peter Parker",
    identidade: "Homem-Aranha",
    idade: "16",
    sextetoSinistro: {
        vilaoUm: "Homem-Areia",
        vilaoDois: "Kraven",
        vilaoTres: "Electro",
        vilaoQuatro: "Doutor Octopus",
        vilaoCinco: "Mystério",
        vilaoSeis: "Abutre"
    },
}

console.log(`O nome do personagem é ${personagem.nome}, ele é o herói ${personagem.identidade}, a idade do personagem é de ${personagem.idade} e os vilões do Sexteto Sinistro são ${personagem.sextetoSinistro}.`)

O resultado sai esse:

rafael@rafael-ubuntu:~/Documentos/Alura/Formações/JSParaBackend/Aula-
3$ node exerc-peter.js
O nome do personagem é Peter Parker, ele é o herói Homem-Aranha, a idade do personagem é de 16 e os vilões do Sexteto Sinistro são [object Object].
3 respostas
solução!

Use JSON.stringify(personagem.sextetoSinistro) . O JS não consegue converter em string todo o objeto, apenas propriedades individuais dele. Você pode dar um override no método toString() e fazer com que ele retorne por padrão um JSON convertido, mas aí é ideal entender o que está rolando. Dá uma pesquisada no google, na doc sobre object keys... sou novo aqui n alura n sei se tem por aqui também.

Sou novato nessas paradas tb, e penso que talvez a melhor sintaxe/construção nesse caso seria o "sextetoSinistro" ser um "array", não um objeto. Dessa forma vc conseguiria mostrar todos ou apenas um de acordo com o índice do array que vc passasse.

Fala, Vinicius. Sim, seria um solução para evitar esse problema. Porém você teria que criar um espaço vazio a mais em cada string, para ter uma formatação "ideal", neste exemplo específico. Mas claro que não usamos nossos códigos para serem exibidos em consoles. E tanto objeto quanto array, servem para apresentar isso num front. Porém com array realmente seria muito mais simples. Mas é importante entender o que está acontecendo ali, pois não tem problema algum usar da maneira do exemplo. Como venho de C#, sou acostumado a não misturar as coisas.