Nicolas Aguirre Yacup
Preguntaestaba jugando un poco con el codigo y me di a la tarea de hacer que una nueva funcion que al subir o bajar de peso me retornara un nuevo objeto sin alterar el original, pero me encontre con la sorpresa que al hacer la copia del objeto, todo se modificaba con la exepcion del peso, por mas que intente el nuevo objeto siempre salia con el peso del objeto original, si alguen sabe como puedo solucionarlo le agradeceria un monton!
aqui esta el resultado de la consola
 { return { ...persona, peso: persona.peso += INCREMENTO_PESO, nombre: nuevoNombre = 'JJ', edad: persona.edad + 1, } } function bajaDePeso(persona) { return { ...persona, peso: persona.peso -= INCREMENTO_PESO, nombre: nuevoNombre = 'pp', edad: persona.edad + 1, } }
Nicolas Aguirre Yacup
muchas gracias!! ya me quedó todo super claro!

David Marín Pineño
Hola niko !, el error que tienes es que en el return persona, le has asignado como peso el peso que ya tiene nico más el incremento de peso, cuando lo que tendrías que haber hecho es primero asignar el peso original de nico (si no lo haces, nunca te va a devolver su peso original) y después lo modificas añadiendo el incremento de peso, te pongo aquí debajo el código y una captura de la consola para que veas el resultado.
Por cierto también deberías revisar la declaración de la función, lo has escrito todo junto por lo que también te debería de haber dado problemas.
var nico = { nombre: 'Nicolas', apellido: 'Aguirre', edad: 25, peso: 125 } const INCREMENTO_PESO = 0.2 const DIAS_DEL_AÑO = 365 function aumentaDePeso(persona){ return { ...persona, peso: persona.peso, peso: persona.peso + INCREMENTO_PESO, nombre: nuevoNombre = 'JJ', edad: persona.edad + 1, } }
<code>
El resultado sería este:
Espero que te sirva, Ánimo !! 👍

Zairi Marion Pineda Vasquez
Hola, ojalá mi respuesta te ayude. Como recomendación, trata de asignarle los nombres a las funciones como si fueran verbos, por ejemplo bajarDePeso(){} cuando realizas algun tipo de accion, es más como una buena practica, si lo dejas como aumentaDePeso y otra persona lo lee, es probable que piense que estas haciendo una validación y el resultado que devuelve es true o false.
El peso de la persona original cambia porque cuando creas la nueva le das el peso que tenia la original más el incremento de peso, pero tambien asignas ese valor a la persona original
function aumentaDePeso(persona) { return { ...persona, peso: persona.peso += INCREMENTO_PESO, peso: persona.peso = persona.peso + INCREMENTO_PESO, //En esta linea le asignas a un nuevo valor al peso de la persona original, porque asignas un nuevo valor //con el nombre puedes omitir nuevoNombre y solo dejar 'JJ' nombre: nuevoNombre = 'JJ', //pero aqui simplemente asignas un nuevo numero que que es como 25+1 = 26, pero no alteras la edad de la persona //original porque no le estas dando una asignación edad: persona.edad + 1, } }