2015-06-22 3 views
5

Najlepiej wyjaśnić to przykładem. Następujące prace w ES6 utworzyć obiekt składają się niektóre klawisze istniejącego obiektu:Utwórz obiekt podzbioru, składający się tylko z niektórych właściwości istniejącego obiektu.

var o = {a:1, b: 2, c: 3} 
var {a, c} = o 
var subsetObj = {a, c} // will be: {a:1, c:3} 

Istnieją dwa downsides tutaj:

  1. zajęło dwa statments oraz dwie linie, aby utworzyć pożądany obiekt podzbioru
  2. Musieliśmy zanieczyścić zakres zmiennych lokalnych, tworząc zmienne pośredniczące a i c, które nie są potrzebne lokalnie, z wyjątkiem jako środka do tworzenia naszego obiektu podzbioru.

Czy istnieje sposób, aby osiągnąć to samo w jednym rachunku, bez wprowadzania zbędnych mieszkańców a i c?

+0

Dlaczego to wymaga specjalnej składni? Dlaczego nie skorzystać z domieszki lub czegoś, np. 'var o = {a: 1, b: 2, c: 3}; _.pick (o, ['a', 'c']) ' – loganfsmyth

+0

Nie * potrzebuje * go, byłoby po prostu miłe. Po prostu utworzyłbym funkcję pomocnika, zamiast wnosić całe lodash, gdybym potrzebował go bardzo dużo. Pytanie dotyczyło w szczególności obsługi natywnej obsługi składni - sam problem jest oczywiście trywialny do rozwiązania. – Jonah

+1

Zupełnie, chciałem tylko o tym wspomnieć. – loganfsmyth

Odpowiedz

3

Nie ma określonej składni tego. Możesz kontynuować:

var subsetObj = {a: o.a, c: o.c}; 

Jeśli masz więcej właściwości lub zmienną liczbę właściwości, utwórz funkcję pomocnika.

Powiązane: Is it possible to destructure onto an existing object? (Javascript ES6)

+0

Bałem się tego. W tym przykładzie wszystko jest w porządku, ale staje się pełne, gdy zastępujesz "a" i "c" długimi nazwami zmiennych. – Jonah

Powiązane problemy