39

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

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

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

4

2 回答 2

79

ECMAScript 2015(又名 ES6 Harmony)

ES 2015 通过称为计算属性名称的功能提供了对此的支持(尽管规范的相关部分称为“对象初始化器”)。

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

elements = { [art]: stk };

原始答案(针对 ES5)

你不能像那样创建对象文字。你需要写

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

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

于 2012-09-03T08:38:20.337 回答
12

使用下面将动态键添加到对象。

elements = {};
elements[art] = stk;
于 2012-09-03T08:38:13.910 回答