¿Cuál sería el resultado de mi código? Espero tener como resultado una sola matriz de longitud 1, quiero generar solo valores de la variable d que no se han actualizado en mi variable var2 pero obtengo una matriz de longitud 2, quiero tener salida
{nombre: "david", edad: 23, día: 23}
const d = [{name : '',age : '',day :23}] const var2 = [...d, { name : 'david', age : 22}] console.log(var2)No está utilizando correctamente el operador de propagación. Debe usarlo para fusionar todos los elementos de d[0] con un objeto que contenga sus valores actualizados.
const d = [{name : '',age : '',day :23}] // for d containing only one element const var2 = [{...d[0], name : 'david', age : 22}] // will result in [{name: '', age: '', day: 23, name: 'david', age: 22}] and be merged by keeping the right-most value // for all elements in d const var3 = d.map(el => { return {...el, name : 'david', age : 22} }) console.log(var2) console.log(var3)Piénsalo de esta manera:
d es una array de objects
{ name : 'david', age : 22} es un object literal
Cuando usa el spread operator en d , le está diciendo que tome cada objeto en d y lo coloque en var2 , luego, al final, agregue { name : 'david', age : 22} .
Entonces, el resultado sería una array con todos los elementos que tenía en d + el objeto literal { name : 'david', age : 22} .
Para obtener el resultado esperado {name : "david", age : 23, day : 23} combine dos objetos como se muestra a continuación.
combinar objeto como {...object1, ...object2}
const d = [{name : '',age : '',day :23}] const var2 = {...d[0], ...{ name : 'david', age : 22}} console.log(var2)