2016-08-04 22 views
18

Jako klucze obiektowe są łańcuchami mogą zawierać dowolne znaki i znaki specjalne. Niedawno natknąłem się na obiekt, który otrzymuję od wywołania API. Ten obiekt ma "-" w swoich kluczowych nazwach.Jak zniszczyć właściwości obiektu za pomocą nazw kluczy, które są niepoprawnymi nazwami zmiennych?

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

destructuring nie działa w tym przypadku, ponieważ key-with-dash nie jest poprawną nazwą zmiennej.

const { key-with-dash } = object; 

Więc jedno pytanie przyszło mi do głowy. Jak mam w takich przypadkach zniszczyć obiekt? Czy to w ogóle możliwe?

Odpowiedz

24

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

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

 
console.log("foo", foo);

+1

Właściwie to nie jest podobny do importu aliasingu w ogóle. Podczas destrukturyzacji można użyć dowolnego dowolnego wyrażenia LHS, a nie tylko identyfikatorów. – Bergi

+0

tak, powiedziałem "coś podobnego", nie to samo ... po prostu za bycie szybszym ... – Hitmands

+1

Wciąż tworzy fałszywe wrażenie, dwa są już zdezorientowane zbyt często. Co masz na myśli, że jest szybszy? – Bergi

13

Wystarczy dać poprawną nazwę

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

Czy wiecie, można destructure ze zmiennymi?

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

+2

Dzięki za dodatkową wskazówkę. Nie wiedziałem o tym :) Chociaż musiałem zaakceptować odpowiedź Hitmands, ponieważ był nieco szybszy :) – larrydahooster

+2

Nie potrzeba uzasadnienia^_^ – naomik

+0

Destrukturyzacja za pomocą zmiennych jest właśnie tym, czego potrzebowałem! –