2014-07-02 90 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)))