Tengo la siguiente matriz:
arr1 = [{Name: "John", Email: "john@example.com", Age: "29"}, {Name: "Emma", Email: "emma@example.com", Age: "25"}]¿Cómo puedo obtener esta matriz como:
arr2 = [{Name: "", Email: "", Age: ""}] sin mutar arr1
He intentado hacer:
let arr2 = arr1[0] for (let i in arr2) { arr2[i] = "" } console.log(arr1) //returns [{Name: "", Email: "", Age: ""}, {Name: "Emma", Email: "emma@example.com", Age: "25"}] console.log(arr2) //returns [{Name: "", Email: "", Age: ""}]pero esto muta arr1[0] con valores vacíos también
He buscado muchas preguntas en SO, pero no pude obtener nada que dejara vacíos todos los valores.
Está pasando por referencia en lugar de copiar la matriz.
Aquí está su código refactorizado para que funcione según lo previsto.
arr1 = [{Name: "John", Email: "john@example.com", Age: "29"}, {Name: "Emma", Email: "emma@example.com", Age: "25"}] let arr2 = {...arr1[0]} // make a copy of arr1[0] for (let i in arr2) { arr2[i] = "" } console.log(arr1) //returns [{Name: "", Email: "", Age: ""}, {Name: "Emma", Email: "emma@example.com", Age: "25"}] console.log([arr2]) //returns [{Name: "", Email: "", Age: ""}] let arr1 = [{Name: "John", Email: "john@example.com", Age: "29"}, {Name: "Emma", Email: "emma@example.com", Age: "25"}] let arr2 = {...arr1[0]} for (let i in arr2) { arr2[i] = "" } console.log(arr1) console.log(arr2)Simplemente reemplace los valores usando for loop o en la forma en que desee cambiarlo.
var myDog = { "name": "Coder", "legs": 4, "tails": 1, "friends": ["freeCodeCamp Campers"] }; // Update the name value myDog.name = "Happy Coder"; document.getElementById("p1").innerHTML = Object.values(myDog); <div id='p1'></div>