2017-01-27 6 views
0

Sagen wir, ich habe ein Objekt:Erstellen Sie ein Objekt auf der Basis anderer Objekt

var obj1 = {var1: 123, var2: 456, var3: "fdsfdsfds"}; 

Wie kann ich Objekt 2 basierend auf obj1 schaffen, so dass es alle Eigenschaften von obj1 hat und sie gehören alle anderen neuen Schlüssel:

var obj2 = {parentKey: {var1: 123, var2: 456, var3: "fdsfdsfds"}}; 

Die Namen der Tasten - var1, var2, var3 - nicht bekannt sind, und sie kann alles sein.

Antwort

1

In der Tat ist es Ihnen nicht Compiler wie babel oder andere verwenden, ist es erforderlich, die folgende Syntax zu verwenden:

var obj2 = {parentKey: Object.assign ({}, obj1)}; 

Wenn Sie nicht wollen, Objekt unveränderlich sein, man muss nur tun :

var obj2 = {parentKey: obj1}; 

für die Standardisierung von ES2015 Warten, müssen Sie einen Compiler verwenden diese Syntax zu verwenden:

const obj1 = {var1: 123, var2: 456, var3: "fdsfdsfds"}; 
const obj2 = {... obj1}; 
+0

downvoter: Diese wird bald sein true wie von ES2018 (wahrscheinlich): https://github.com/sebmarkbage/ecmascript-rest-spread Dieser Vorschlag ist bereits in Stufe 3, weitgehend von transpilers unterstützt und in React weit verbreitet. Hajji: Wenn man sich für die Verwendung von Funktionen ausspricht, die noch nicht Standard sind, ist es wirklich wichtig, das zu sagen. –

1

Wenn Sie wirklich das Objekt kopieren müssen, ist eine einfache Möglichkeit, eine einfältige Kopie zu tun, die neue Object.assign-Funktion (die für ältere Umgebungen angepasst werden kann);

var obj2 = {parentKey: Object.assign({}, obj1)}; 

Wenn Sie (keine Kopie) mit der gleichen Objekt nichts ausmacht, können Sie sich der Wert des neuen Objekts parentKey machen es einfach:

var obj2 = {parentKey: obj1}; 
Verwandte Themen