2016-10-23 2 views
1

Blick durch Atom Quellcode, fand ich diese Verwendung der for..of Aussage:Verständnis Destrukturierung mit für ... von

for (const {name, duration, x} of results) { 
    dataByBenchmarkName[name] = dataByBenchmarkName[name] || {points: []} 
    dataByBenchmarkName[name].points.push({x, y: duration}) 
} 

Ich versuche, diese Iteration im Terminal zu replizieren, aber der Block nie ausgeführt (als ob ich eine Klammer vermisse). Ich habe versucht, über Objekte (flach und tief) und Arrays zu iterieren. Wenn ich die geschweiften Klammern herausnehme, funktioniert die Anweisung wie dokumentiert. Kann mir jemand ein Arbeitsbeispiel mit Klammern geben, von denen ich lernen kann? Etwas Einfaches wie:

var test = ...; 
for(var {x,y,z} of test) { 
    console.log(x); 
}; 

Dank

+0

Was in diesem ersten Codebeispiel geschieht, hängt vom Wert von 'results'. – Pointy

+1

'var test = ...;' ??? Was?? es muss ein Array sein – vsync

+0

Die Frage im Titel ist nicht, was Sie wirklich fragen. Bitte ändern Sie zu 'helfen, den Quellcode von Atom zu verstehen. von' – vsync

Antwort

6

Geschweifte Klammern sind nur für destructuring assignment. Dies funktioniert für mich:

var test = [{x:1,y:2,z:4}, {x:5, y:6,z:7}]; 
 
for(var {x,y,z} of test) 
 
    console.log(x,y,z);

Ausgang:

1 2 4 
5 6 7 
2

Dies funktioniert

var test = [{x:1,y:3,z:2},{x:5,y:6,z:3}] 
 
for(var {x,y,z} of test) { 
 
    console.log(x); 
 
}

+0

Danke, du hast gesehen, dass du der Erste bist. – Onyooo

+1

@Onyooo - zuerst zu sein bedeutet nichts, wenn andere Antworten besser sind, da diese Seite von Tausenden gesehen wird, die eine Antwort suchen, und sie verdienen es, die ** beste ** Antwort zu bekommen, nicht die erste. – vsync

Verwandte Themen