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

IT技术 javascript
2021-01-29 17:28:34

我正在使用这段代码(如下所示)来尝试填充Parameters在 for 循环内命名的对象文字 我需要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个回答

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

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

是的,只是在问题中打错了字。应该是var Parameters=[];问题/问题仍然存在。
2021-04-09 17:28:34

ES2015(通过 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 }));

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

var obj = {
    test:1
}


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

这里 obj.key 不起作用