• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
    • Questions
    • Teachers
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

620
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error