Javascript:变量作为数组键

Bar*_*más 35 javascript arrays

我正在构建和数组,其中我的数组键是来自这样的变量:

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

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

Jon*_*Jon 68

ECMAScript 2015(又名ES6 Harmony)

ES 2015通过称为计算属性名称的功能为此提供支持(尽管规范的相关部分称为"对象初始化程序").

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

elements = { [art]: stk };
Run Code Online (Sandbox Code Playgroud)

原始答案(针对ES5)

你不能像这样创建对象文字.你需要写

elements = {};
elements[art] = stk;
Run Code Online (Sandbox Code Playgroud)

之所以elements = { art: stk }不起作用,是因为它等同于elements = { "art": stk }(带引号).只要art是合法的标识符,这两个版本在JavaScript中是等效的,第二个版本清楚地说明了正在发生的事情.


xda*_*azz 9

使用下面的方法向对象添加动态键.

elements = {};
elements[art] = stk;
Run Code Online (Sandbox Code Playgroud)