我正在构建和数组,其中我的数组键来自这样的变量:
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 通过称为计算属性名称的功能提供了对此的支持(尽管规范的相关部分称为“对象初始化器”)。
简单地说,用方括号将变量(通常是任何表达式)括起来以评估它并将结果用作属性名称。在你的例子中,那将是
elements = { [art]: stk };
你不能像那样创建对象文字。你需要写
elements = {};
elements[art] = stk;
之所以elements = { art: stk }
不起作用是因为它相当于elements = { "art": stk }
(带引号)。只要art
是合法的标识符,这两个版本在 JavaScript 中是等价的,第二个版本清楚地说明了发生了什么。
使用下面将动态键添加到对象。
elements = {};
elements[art] = stk;