将动态键:值对传递给对象文字?

时间:2010-11-07 19:37:56

标签: javascript

我正在使用这段代码(如下所示)尝试在for循环中填充名为Parameters的对象文字。我需要将key:value对与迭代i变量的循环一起分配,如下所示:{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)
}

3 个答案:

答案 0 :(得分:30)

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

因为ECMAScript将此key中的{key:1}视为文字。

答案 1 :(得分:4)

ES2015(via Babel)支持动态键:

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

答案 2 :(得分:0)

同样可以用于查找:obj [key]。请记住obj.key会在对象中寻找键

var obj = {
    test:1
}


var key = 'test'
obj.test = obj[key] = 1

这里obj.key不起作用