IMO, c'est le moyen le plus simple d'accomplir ce que vous recherchez:
let { prop1, prop2, prop3 } = someObject;
let data = { prop1, prop2, prop3 };
// data === { prop1: someObject.prop1, ... }
Fondamentalement, déstructurez en variables, puis utilisez le raccourci d'initialisation pour créer un nouvel objet. Pas besoin dObject.assign
Je pense que c'est le moyen le plus lisible, de toute façon. Vous pouvez par la présente sélectionner les accessoires exacts someObject
que vous souhaitez. Si vous avez un objet existant dans lequel vous souhaitez simplement fusionner les accessoires, faites quelque chose comme ceci:
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
Une autre façon, sans doute plus propre, de l'écrire est:
let { prop1, prop2, prop3 } = someObject;
let newObject = { prop1, prop2, prop3 };
// Merges your selected props into otherObject
Object.assign(otherObject, newObject);
Je l'utilise POST
beaucoup pour les demandes où je n'ai besoin que de quelques éléments de données discrètes. Mais, je suis d'accord qu'il devrait y avoir une seule ligne pour faire cela.
EDIT: PS -
J'ai récemment appris que vous pouvez utiliser l'ultra déstructuration dans la première étape pour extraire des valeurs imbriquées d'objets complexes! Par exemple...
let { prop1,
prop2: { somethingDeeper },
prop3: {
nested1: {
nested2
}
} = someObject;
let data = { prop1, somethingDeeper, nested2 };
De plus, vous pouvez utiliser l'opérateur de propagation au lieu d'Object.assign lors de la création d'un nouvel objet:
const { prop1, prop2, prop3 } = someObject;
let finalObject = {...otherObject, prop1, prop2, prop3 };
Ou...
const { prop1, prop2, prop3 } = someObject;
const intermediateObject = { prop1, prop2, prop3 };
const finalObject = {...otherObject, ...intermediateObject };
Object.assign(oof, foo)