我正在构建一个数组,其中我的数组键是从一个变量中获取的,就像这样:
var art = $('#article_id').val();
var stk = $('#stk').val();
elements ={ art : stk };
alert(elements[art]);
但我最终得到的输出是 art=>50
,而不是 5123=>50
。
我正在构建一个数组,其中我的数组键是从一个变量中获取的,就像这样:
var art = $('#article_id').val();
var stk = $('#stk').val();
elements ={ art : stk };
alert(elements[art]);
但我最终得到的输出是 art=>50
,而不是 5123=>50
。
ES 2015通过称为computed property names的功能提供了支持(尽管规范的相关section称为“对象初始化器”)。
简单来说,用方括号将变量(通常是任何表达式)括起来以评估它,并使用结果作为属性名。在您的示例中,就会是这样:
elements = { [art]: stk };
您不能像那样创建对象字面量。您需要编写
elements = {};
elements[art] = stk;
< p > elements = { art: stk }
不起作用的原因是它等同于 elements = { "art": stk }
(有引号)。只要 art
是合法标识符,这两个版本在 JavaScript 中是等效的,第二个版本使情况更清晰。
elements = { [art]: stk };
。请参见https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names - searlea使用以下代码向对象添加动态键。
elements = {};
elements[art] = stk;