2014-07-02 89 views
0

我怎样才能在一行做到这一点:与属性推的对象数组

var u = { code: 'foo' }; 
var a = []; 
var o = {}; 
o[u.code] = 'bar'; 
a.push(o); 

;下面,我会承担的工作,是无效的:

a.push({ u.code: 'bar' }); 
a.push({ u['code']: 'bar' }); 

我可仅仅有这里brainfart ...

+0

像这样:'var u = {code:'foo'}; var a = []; var o = {}; o [u.code] ='bar'; a.push(o);'.. 。在一行中有多个语句是完全有效的。 –

+1

对象文字的Javascript键必须始终是字符串文字。 –

+1

@Andrew:不,你也可以使用数字文字和标识符名称。 https://es5.github.io/#x11.1.5 –

回答

1

最短的你可以在ES5的代码是:

var u = { code: 'foo' }, a = [{}]; 
a[0][u.code] = 'bar'; 

一旦computed properties通过浏览器(在未来ES6)的支持,你可以使用:

var u = { code: 'foo' }, a = [{[u.code]: 'bar'}]; 

您也可以使用今天ES6语法和transpile它ES5。

0

费利克斯·克林的答案是完全正确,虽然有一个肮脏的替代做你想做的事,只是一条线(不要告诉任何人我告诉你做这种事情= P的):

a.push(JSON.parse('{"{0}": "bar"}'.replace('{0}', u.code)))