传递dynamic关键字:值对的对象文字?

我正在使用这段代码(如下所示)尝试在for循环中填充名为Parameters的对象字面值。 我需要key:value对与迭代variables的循环一起分配,例如: {key_1:chunks[1],key_2:chunks[2]} 。 但是,我的代码不起作用。 'key_'+i没有被反映在字面上。

显然,我在这里错过了一些东西。 有人能告诉我是什么吗?…谢谢。

 var Parameters=[]; var len = chunks.length; for (var i = 0; i < len; i++) { var key='key_'+i obj= { key : chunks[i]}; Parameters.push(obj) } 

编辑:使用var obj = {}; obj[key] = chunks[i]; var obj = {}; obj[key] = chunks[i];

因为ECMAScript把这个{key:1}视为文字。

ES2015( 通过Babel )支持dynamic密钥:

 const Parameters=[]; const len = chunks.length; for (let i = 0; i < len; i++) { const key = `key_${i}`; obj = { [key] : chunks[i]}; Parameters.push(obj); } 

(注意钥匙周围的括号)

或者更好的是:

 const Parameters = chunks.map((c, i) => ({ [`key_${i}`]: c })); 

同样可以用于查找:obj [key]。 remmeber obj.key会查找对象中的键

 var obj = { test:1 } var key = 'test' obj.test = obj[key] = 1 

这里obj.key不起作用