传递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不起作用