将具有属性的对象推送到数组

时间:2014-07-02 03:49:01

标签: javascript

如何在一行中执行此操作:

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' });

我可能只是在这里吃脑筋......

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

菲利克斯·克林的回答是完全正确,虽然有一个肮脏的替代方案可以在一行中做你想要的事情(不要告诉任何人我告诉你做这种事情= P):

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