1
resposta

[Bug] Bug no código utilizando Spread operator

Boa noite!

Fiz um código para testes utilizando o spread operator mas o resultado foi diferente do que queria, ele apenas separou por indices uma parte, oque fiz de errado?

const personagem = {
    name: "bArA",
    raca: "Dwarf",
    classe: "Mage",
    status: {
        hp: 10,
        atk: 4,
        sptk: 14,
        def: 4,
        spdf: 6,
        sp: 7,
    },
    itens: ["cajado", "manto"]
}

const apresentacaoPersonagem = {...personagem.name, ...personagem.classe};

console.log(apresentacaoPersonagem);

O resultado está dando: { '0': 'M', '1': 'a', '2': 'g', '3': 'e' }

Obrigado,

Abs,

1 resposta

Olá, Lucas!

Entendo sua dúvida, o operador spread é realmente um pouco confuso no começo. No seu caso, você tentou usar o operador spread em strings, o que faz com que ele se comporte de maneira diferente do que quando usado em objetos.

No JavaScript, quando usamos o operador spread em uma string, ele vai dividir essa string em caracteres individuais. Por isso, quando você tentou usar {...personagem.name, ...personagem.classe}, o resultado foi um objeto com as letras de "Mage" (a classe do personagem) como propriedades separadas, pois a string "Mage" foi a última a ser espalhada.

Se o que você quer é criar um novo objeto que contenha o nome e a classe do personagem, você pode fazer isso sem usar o operador spread. Veja:

const apresentacaoPersonagem = {
    name: personagem.name,
    classe: personagem.classe
};

console.log(apresentacaoPersonagem);

Nesse caso, o resultado será um objeto com as propriedades name e classe, contendo os respectivos valores do objeto personagem.

Espero ter ajudado e bons estudos!