Javascript:变量作为数组键

时间:2012-09-03 08:37:07

标签: javascript arrays

我正在构建和数组,其数组键来自如下变量:

var art = $('#article_id').val();
var stk =  $('#stk').val();
elements ={ art : stk };
alert(elements[art]);

但我最终得到的是art=>50而不是5123=>50

2 个答案:

答案 0 :(得分:63)

ECMAScript 2015(又名ES6 Harmony)

ES 2015通过名为computed property names的功能为此提供支持(尽管相关的section of the spec称为“对象初始化程序”)。

简单地说,用方括号包围变量(通常是任何表达式)来评估它并将结果用作属性名称。在您的示例中

elements = { [art]: stk };

原始答案(针对ES5)

您无法像这样创建对象文字。你需要写

elements = {};
elements[art] = stk;

elements = { art: stk }不起作用的原因是因为它等同于elements = { "art": stk }(带引号)。只要art是合法标识符,这两个版本在JavaScript中是等效的,第二个版本清楚地表明发生了什么。

答案 1 :(得分:7)

使用以下内容向对象添加动态密钥。

elements = {};
elements[art] = stk;