我正在构建和数组,其数组键来自如下变量:
var art = $('#article_id').val();
var stk = $('#stk').val();
elements ={ art : stk };
alert(elements[art]);
但我最终得到的是art=>50
而不是5123=>50
答案 0 :(得分:63)
ES 2015通过名为computed property names的功能为此提供支持(尽管相关的section of the spec称为“对象初始化程序”)。
简单地说,用方括号包围变量(通常是任何表达式)来评估它并将结果用作属性名称。在您的示例中
elements = { [art]: stk };
您无法像这样创建对象文字。你需要写
elements = {};
elements[art] = stk;
elements = { art: stk }
不起作用的原因是因为它等同于elements = { "art": stk }
(带引号)。只要art
是合法标识符,这两个版本在JavaScript中是等效的,第二个版本清楚地表明发生了什么。
答案 1 :(得分:7)
使用以下内容向对象添加动态密钥。
elements = {};
elements[art] = stk;