Cuando coloco un objeto en una matriz usando el método push y luego cambio el valor del objeto, el valor del objeto en la matriz también cambia. ¿Cómo prevenirlo?
function onLoad() { let array = [] let object = {} object[1] = [1,2] array.push(object) object[1] = [1,3] console.log(array) } onLoad();Me gustaría la consola de código [{1,2}] pero consolará [{1,3}].
¿Alguien sabría cómo arreglar esto?
En JavaScript, los tipos de datos complejos (objetos y matrices) se copian por referencia, mientras que los tipos de datos primitivos (cadenas, números y booleanos) se copian por valor.
En pocas palabras, pasar por referencia no creará una copia, sino que se referirá a la misma memoria. Entonces, los objetos y matrices originales se cambiarán.
Copiar por valor creará una copia del valor y, por lo tanto, el valor original no se cambiará
function change(array1){ array1[0] = "changed"; } var original = ["original"] change(original) console.log(original) function changePrimitive(input) { input = "changed" } var original = "original" changePrimitive(original) console.log(original);