JavaScript:将变量用作数组键

44

我正在构建一个数组,其中我的数组键是从一个变量中获取的,就像这样:

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

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


2
请问能否更改标题,因为这个问题与数组无关而与对象有关。谢谢。 - velop
2个回答

84

ECMAScript 2015(又称ES6 Harmony)

ES 2015通过称为computed property names的功能提供了支持(尽管规范的相关section称为“对象初始化器”)。

简单来说,用方括号将变量(通常是任何表达式)括起来以评估它,并使用结果作为属性名。在您的示例中,就会是这样:

elements = { [art]: stk };

原始答案(针对ES5)

您不能像那样创建对象字面量。您需要编写

elements = {};
elements[art] = stk;
< p > elements = { art: stk } 不起作用的原因是它等同于 elements = { "art": stk }(有引号)。只要 art 是合法标识符,这两个版本在 JavaScript 中是等效的,第二个版本使情况更清晰。


1
更新:ECMAScript 2015增加了对计算属性名的支持。现在答案可以写成elements = { [art]: stk };。请参见https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names - searlea
@searlea:谢谢你提醒我!我已经更新了答案,包括这个信息。 - Jon

13

使用以下代码向对象添加动态键。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接