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 }(引用符付き) と同等であるためです。が正当な識別子である限り、2 つのバージョンは JavaScript で同等でartあり、2 番目のバージョンは何が起こっているかを明確にします。

于 2012-09-03T08:38:20.337 に答える
12

以下を使用して、動的キーをオブジェクトに追加します。

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