2016-08-04 20 views
18

Da Objektschlüssel Zeichenfolgen sind, können sie beliebige Zeichen und Sonderzeichen enthalten. Ich bin kürzlich auf ein Objekt gestoßen, das ich von einem API-Aufruf erhalte. Dieses Objekt hat '-' in seinen Schlüsselnamen.Wie Sie Objekteigenschaften mit Schlüsselnamen, die ungültige Variablennamen sind, strukturieren?

const object = { 
    "key-with-dash": [] 
} 

Destrukturierung funktioniert nicht in diesem Fall, weil key-with-dash kein gültiger Variablenname ist.

const { key-with-dash } = object; 

So eine Frage kam mir in den Sinn. Wie soll ich das Objekt in solchen Fällen destrukturieren? Ist es überhaupt möglich?

Antwort

24

const data = { 
 
    "key-with-dash": ["BAZ"] 
 
} 
 

 
const {"key-with-dash": foo} = data; 
 

 
console.log("foo", foo);

+1

Eigentlich ist es nicht ähnlich Aliasing überhaupt zu importieren. Bei der Destrukturierung können Sie beliebige beliebige LHS-Ausdrücke verwenden, nicht nur Bezeichner. – Bergi

+0

ja, ich sagte "etwas ähnliches", nicht gleich ... nur um schneller zu sein ... – Hitmands

+1

Immer noch schafft es einen falschen Eindruck, die beiden sind schon zu oft verwirrt. Was meinst du, es ist schneller? – Bergi

13

es nur einen gültigen Namen geben

let object = { 'key-with-dash': [] } 
 
let {'key-with-dash':y} = object 
 
console.log(y) 
 
// => []

Wußten Sie auch Sie mit Variablen destrukturiert können?

let object = { 'key-with-dash': [] } 
 
let key = 'key-with-dash' 
 
let {[key]:y} = object 
 
console.log(y) 
 
// => []

+2

Danke für den zusätzlichen Tipp. Wusste nicht darüber :) Obwohl ich Hitmands Antwort annehmen musste, da er etwas schneller war :) – larrydahooster

+2

Keine Begründung notwendig^_^ – naomik

+0

Die Strukturierung mit Variablen ist genau das, was ich brauchte! –