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

Dúvida sobre spread operator

livrosComDesconto = livros.map(livro => { return {...livro, preco: livro.preco - (livro.preco * desconto)} })

Ao escrever esse código, o professor diz que: {...livro, preco: livro.preco - (livro.preco * desconto)} esse bloco de código está fazendo uma cópia de 'livro' e modificando apenas o preço, no caso, livro.preco, e de fato é isso. No entanto, gostaria de saber como esse operador funciona, como ele entende o 'parâmetro' livro e o preco. E melhor, como ele interpreta esses parâmetros com base no array de livros que temos.

1 resposta
solução!

Olá Davi, tudo bem?

O spread operator é um recurso muito útil do JavaScript, que permite que você faça uma cópia de um objeto ou array e adicione novas propriedades ou elementos. No caso do seu código, o spread operator está sendo utilizado para fazer uma cópia do objeto 'livro' e adicionar uma nova propriedade 'preco', que é calculada a partir do preço original do livro e de um desconto.

O operador funciona da seguinte maneira: ao utilizar os três pontos antes do objeto ou array que você deseja copiar, o JavaScript entende que deve criar uma nova referência para esse objeto ou array, ou seja, uma cópia. Em seguida, você pode adicionar novas propriedades ou elementos a essa cópia, como no exemplo que você mostrou.

No seu caso, o parâmetro 'livro' é simplesmente o objeto que está sendo passado como argumento para a função map. Já o 'preco' é uma nova propriedade que está sendo adicionada à cópia do objeto 'livro', e que é calculada a partir do preço original do livro e de um desconto.

Com base no array de livros que você tem, o spread operator irá criar uma nova cópia de cada objeto 'livro' e adicionar a nova propriedade 'preco' calculada a partir do desconto informado.

Espero ter ajudado.

Um abraço e bons estudos.