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
Passing in dynamic key:value pairs to an object literal?
提问by cube
I am using this slice of code (shown below) in an attempt to populate the object literal named Parameters
inside the for loop. I need the key:value
pair to be assigned in conjunction with the loops iterating i
variable, as such: {key_1:chunks[1],key_2:chunks[2]}
. However, my code isn't working. The 'key_'+i
is 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 key
in this {key:1}
as literal.
因为 ECMAScript 将key
this 中的{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 不起作用