OMI, 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 inicializador para hacer un nuevo objeto. No hay necesidad deObject.assign
Creo que esta es la forma más legible, de todos modos. Por la presente, puede seleccionar los accesorios exactos de los someObject
que desea. 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 POST
mucho para solicitudes en las que solo necesito algunos datos discretos. Pero, estoy de acuerdo en que debería haber una línea para hacer esto.
EDITAR: PD:
¡recientemente aprendí que puedes usar la ultradesestructuració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 hacer 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 };
Object.assign(oof, foo)