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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/4119324/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-23 10:59:22  来源:igfitidea点击:

Passing in dynamic key:value pairs to an object literal?

javascript

提问by cube

I am using this slice of code (shown below) in an attempt to populate the object literal named Parametersinside the for loop. I need the key:valuepair to be assigned in conjunction with the loops iterating ivariable, as such: {key_1:chunks[1],key_2:chunks[2]}. However, my code isn't working. The 'key_'+iis not being reflected in the literal.

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

There's something I am missing here, obviously. Can someone tell me what it is?...Thanks.

显然,我在这里缺少一些东西。有人能告诉我它是什么吗?...谢谢。

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

回答by meder omuraliev

EDIT: Use var obj = {}; obj[key] = chunks[i];

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

Because ECMAScript treats the keyin this {key:1}as literal.

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

回答by Paul Tyng

ES2015 (via Babel) Supports dynamic keys:

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

(note the brackets around the key)

(注意键周围的括号)

Or better yet:

或者更好:

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

回答by Soman Dubey

same can be used for lookup: obj[key] . Do remmeber obj.key will look for key in object

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

var obj = {
    test:1
}


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

Here obj.key will not work

这里 obj.key 不起作用