• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Pruebas Online
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

620
Vistas
¿Es posible desestructurar sobre un objeto existente? (Javascript ES6)

Por ejemplo, si tengo dos objetos:

 var foo = { x: "bar", y: "baz" }

y

 var oof = {}

y quería transferir los valores de x e y de foo a oof. ¿Hay alguna manera de hacerlo usando la sintaxis de desestructuración es6?

tal vez algo como:

 oof{x,y} = foo
about 3 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Si bien es feo y un poco repetitivo, puedes hacer

 ({x: oof.x, y: oof.y} = foo);

que leerá los dos valores del objeto foo y los escribirá en sus ubicaciones respectivas en el objeto oof .

Personalmente prefiero leer

 oof.x = foo.x; oof.y = foo.y;

o

 ['x', 'y'].forEach(prop => oof[prop] = foo[prop]);

aunque.

about 3 years ago · Santiago Trujillo Denunciar

0

En mi opinión, esta es la forma más fácil de lograr lo que estás buscando:

 let { prop1, prop2, prop3 } = someObject; let data = { prop1, prop2, prop3 }; // data === { prop1: someObject.prop1, ... }

Básicamente, desestructurar en variables y luego usar la abreviatura del inicializador para crear un nuevo objeto. No hay necesidad de Object.assign

Creo que esta es la forma más legible, de todos modos. Por la presente, puede seleccionar los accesorios exactos de someObject que desee. Si tiene un objeto existente en el que solo desea fusionar los accesorios, haga algo como esto:

 let { prop1, prop2, prop3 } = someObject; let data = Object.assign(otherObject, { prop1, prop2, prop3 }); // Makes a new copy, or... Object.assign(otherObject, { prop1, prop2, prop3 }); // Merges into otherObject

Otra forma, posiblemente más limpia, de escribirlo es:

 let { prop1, prop2, prop3 } = someObject; let newObject = { prop1, prop2, prop3 }; // Merges your selected props into otherObject Object.assign(otherObject, newObject);

Lo uso mucho para solicitudes POST donde solo necesito algunos datos discretos. Pero estoy de acuerdo en que debería haber una sola línea para hacer esto.

EDITAR: PD: ¡recientemente aprendí que puede usar ultra desestructuración en el primer paso para extraer valores anidados de objetos complejos! Por ejemplo...

 let { prop1, prop2: { somethingDeeper }, prop3: { nested1: { nested2 } } = someObject; let data = { prop1, somethingDeeper, nested2 };

Además, puede usar el operador de propagación en lugar de Object.assign al crear un nuevo objeto:

 const { prop1, prop2, prop3 } = someObject; let finalObject = {...otherObject, prop1, prop2, prop3 };

O...

 const { prop1, prop2, prop3 } = someObject; const intermediateObject = { prop1, prop2, prop3 }; const finalObject = {...otherObject, ...intermediateObject };
about 3 years ago · Santiago Trujillo Denunciar

0

No, la desestructuración no admite expresiones de miembros en forma abreviada, sino solo nombres de propiedades sin formato en el momento actual. Ha habido conversaciones al respecto en esdiscuss, pero ninguna propuesta llegará a ES6.

Sin embargo, es posible que pueda usar Object.assign ; si no necesita todas las propiedades propias, aún puede hacerlo

 var foo = …, oof = {}; { let {x, y} = foo; Object.assign(oof, {x, y}) }
about 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda