es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , ,

Answer

  1. Avatar for 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étodo find devuelve una referencia al objeto que encuentra en el array. Esto significa que la variable exists almacena una referencia al objeto original en el array, y cuando actualizamos la propiedad age de este objeto usando exists.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étodo Object.assign(). Por ejemplo:

    let arr = [{ age: 3 }, { age: 5 }, { age: 6 }, { age: 7 }];
    let exists = arr.find(x => x.age < 4);
    let updated = {...exists, age: exists.age + 1};
    console.log(updated); // { age: 4 }
    console.log(arr); // [{age:3},{age:5},{age:6},{age:7}]
    

    En este ejemplo, creamos un nuevo objeto updated que contiene una copia del objeto exists con la propiedad age actualizada. El array original arr permanece sin cambios.

Comments are closed.