IMO ist dies der einfachste Weg, um das zu erreichen, wonach Sie suchen:
let { prop1, prop2, prop3 } = someObject;
let data = { prop1, prop2, prop3 };
// data === { prop1: someObject.prop1, ... }
Grundsätzlich in Strukturen zerlegen und dann die Initialisierungskürzel verwenden, um ein neues Objekt zu erstellen. Kein Bedarf fürObject.assign
Ich denke, das ist sowieso der am besten lesbare Weg. Hiermit können Sie genau die Requisiten auswählen, die someObject
Sie möchten. Wenn Sie ein vorhandenes Objekt haben, in das Sie nur die Requisiten zusammenführen möchten, gehen Sie wie folgt vor:
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
Eine andere, wohl sauberere Art, es zu schreiben, ist:
let { prop1, prop2, prop3 } = someObject;
let newObject = { prop1, prop2, prop3 };
// Merges your selected props into otherObject
Object.assign(otherObject, newObject);
Ich benutze dies häufig für POST
Anfragen, bei denen ich nur wenige diskrete Daten benötige. Aber ich stimme zu, dass es dafür einen Einzeiler geben sollte.
EDIT: PS -
Ich habe kürzlich erfahren, dass Sie im ersten Schritt Ultra-Destrukturierung verwenden können, um verschachtelte Werte aus komplexen Objekten herauszuholen! Zum Beispiel...
let { prop1,
prop2: { somethingDeeper },
prop3: {
nested1: {
nested2
}
} = someObject;
let data = { prop1, somethingDeeper, nested2 };
Außerdem können Sie beim Erstellen eines neuen Objekts den Spread-Operator anstelle von Object.assign verwenden:
const { prop1, prop2, prop3 } = someObject;
let finalObject = {...otherObject, prop1, prop2, prop3 };
Oder...
const { prop1, prop2, prop3 } = someObject;
const intermediateObject = { prop1, prop2, prop3 };
const finalObject = {...otherObject, ...intermediateObject };
Object.assign(oof, foo)