IMO questo è il modo più semplice per realizzare ciò che stai cercando:
let { prop1, prop2, prop3 } = someObject;
let data = { prop1, prop2, prop3 };
// data === { prop1: someObject.prop1, ... }
Fondamentalmente, distruggere in variabili e quindi utilizzare la scorciatoia di inizializzazione per creare un nuovo oggetto. Non c'è bisogno diObject.assign
Penso che questo sia il modo più leggibile, comunque. Con la presente puoi selezionare i puntelli esatti tra someObject
quelli che desideri. Se hai un oggetto esistente in cui vuoi solo unire gli oggetti di scena, fai qualcosa del genere:
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
Un altro modo, probabilmente più pulito, per scriverlo è:
let { prop1, prop2, prop3 } = someObject;
let newObject = { prop1, prop2, prop3 };
// Merges your selected props into otherObject
Object.assign(otherObject, newObject);
Lo uso molto per POST
richieste in cui ho bisogno solo di alcuni dati discreti. Ma, sono d'accordo che ci dovrebbe essere un solo aspetto per farlo.
EDIT: PS -
Recentemente ho imparato che puoi usare l'ultra destrutturazione nel primo passo per estrarre i valori nidificati da oggetti complessi! Per esempio...
let { prop1,
prop2: { somethingDeeper },
prop3: {
nested1: {
nested2
}
} = someObject;
let data = { prop1, somethingDeeper, nested2 };
Inoltre, è possibile utilizzare l'operatore spread anziché Object.assign quando si crea un nuovo oggetto:
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)