2016-03-19 2 views
3

Я ищу простой синтаксис, позволяющий мне создать новый объект с одним свойством и установить значение этого свойства. Вот пример. Мне бы хотелось сделать что-то на одной линии.Создайте новый объект с переменным ключом и значением в одной строке

let parent = 'jackets', 
let responses = [{'color':'red', 'size':'medium'}] 
let tmp = {} 
tmp[parent] = responses 
return tmp 

Если войти:

{ 
"jackets": [ 
    { 
    'color':'red', 
    'size':'medium' 
    } 
    ] 
} 

Я думал, что я видел когда-то, что это будет возможно в эс-спецификации, но он не работает с Вавилонской-2015 предустановки.

let jackets = {`${parent}`: responses} 
+0

Также см. [Шаблон String As Object Property Name] (http://stackoverflow.com/q/33194138/1529630) – Oriol

ответ

1

это работает для меня:

* Примечание: У меня есть результат утешительного на консоль. Откройте консоль, чтобы увидеть результаты.

const responses = [{'color':'red', 'size':'medium'}] 
 
const jackets = "jackets" 
 
const A = {[jackets]: responses} 
 
console.log(A)
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/6.1.19/browser.min.js"></script>

0Aconst% 20A% 20% 3D% 20% 7B% 5BL% 5D% 3A% 20responses% 7D% 0Aconsole.log (А)% 0A

const jackets = {[parent]: responses} 
console.log(jackets) 

// gives 

{"jackets":[{"color":"red","size":"medium"}]} 

отметил: другой человек попал передо мной.

1

Вам нужно будет использовать вычисленные имена свойств.

const key = 'foo'; 
const value = 'bar'; 

const foobar = {[key]: value}; // {foo: 'bar'} 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names

(Это работает с es2015 Babel пресета)

+0

Также здесь находится документ babel: https://babeljs.io/docs/learn- es2015/# расширенных объектно-литералы – nemoinho

Смежные вопросы