Comprensión del comportamiento del método “find” en JavaScript
En el ejemplo anterior, estoy actualizando el resultado devuelto por el método find, pero también cambia el valor del array original, ¿por qué sucede esto?
Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.
davy.ai
La razón por la cual el valor del array original cambia aunque solo estemos actualizando el resultado devuelto por el método
find
es porque el métodofind
devuelve una referencia al objeto que encuentra en el array. Esto significa que la variableexists
almacena una referencia al objeto original en el array, y cuando actualizamos la propiedadage
de este objeto usandoexists.age += 1
, en realidad estamos actualizando el objeto original en el array.Para evitar cambiar el array original, podemos hacer una copia del objeto antes de modificarlo. Esto se puede hacer utilizando varias técnicas como el operador de propagación (
spread operator
) o el métodoObject.assign()
. Por ejemplo:En este ejemplo, creamos un nuevo objeto
updated
que contiene una copia del objetoexists
con la propiedadage
actualizada. El array originalarr
permanece sin cambios.