2017-03-03 5 views
0

Bei den Eingabewert Zugriff:Kann nicht Destrukturierung Zuordnung von komplexen Objekt

input = 
    name:'Foo' 
    id:'d4cbd9ed-fabc-11e6-83e6-307bd8cc75e3' 
    ref:5 
    addtData:'d4cbd9ed-fabc-11e6-83e6-307bd8cc75e3' 
    data:'bar' 

Wenn ich versuche, die Eingabe über eine Funktion wie diese destrukturiert:

simplify: (input)-> 
    { name, ref, id } = input 

... der Rückgabewert ist immer noch die vollständige Eingabe oder eine Kopie der Eingabe.

Fehle ich hier etwas Einfaches? Wie kann ich auf den destrukturierten Wert zugreifen? Wenn Sie nicht über eine Rückgabe auf den Wert zugreifen können, scheint die Destrukturierung außerhalb der lokalen Werte nur einen geringen Wert zu haben.

Antwort

0

Obwohl dies nicht unbedingt ein Vorteil ist, war die einzige Möglichkeit, die richtige Antwort zu erhalten, die Zuweisung der Strukturwerte zum lokalen Bereich unter Verwendung von @ (aka this).

input = 
    name:'foo' 
    data:'bar' 
    id: 12314 
    key:'children' 
    ref:1 

f = (input)-> 
    { @name, @id } = input 

r = {} 
f.call(r, input) 
console.log r # Object {name: "foo", id: 12314} 

Arbeitsbeispiel - link

Wenn jemand einen besseren Weg, dies zu nähern hat, fügen Sie bitte eine Antwort, damit ich es wählen kann, da dies nicht wie der beste Weg scheint.

Verwandte Themen