2013-07-24 7 views
9

I die folgenden drei assoziativen Arrays identisch sein erwarten: In den obigen Beispielen und arr1arr3 gleich sind,dynamische Schlüssel in Javascript assoziativen Array-Deklaration Einzeiler

arr1 = { "dynamic":"foo", "bar":"baz" }; 

key = "dynamic";  
arr2 = { key:"foo", "bar":"baz" }; 

arr3 = {}; 
arr3[key] = "foo"; 
arr3["bar"] = "baz"; 

arr2 aber unterschiedlich ist.

Ist es möglich, dynamische Schlüssel in der Deklaration eines assoziativen Javascript-Arrays zu verwenden?

+1

Nein, Sie können keine Variablen als Schlüssel in einer Objektliteral Erklärung verwenden. – Musa

+0

[N] (http://Stackoverflow.com/q/6500573/1048572) [o] (http://Stackoverflow.com/q/4071499/1048572) – Bergi

+0

Duplikat von [Verwenden einer Variablen für einen JavaScript-Objektschlüssel] (http://stackoverflow.com/questions/2274242/using-a-variable-for-a-javascript-object-key) (und viele andere) – Bergi

Antwort

5

Nur die []-Syntax funktioniert für dynamische Schlüssel. Sie können sie nicht in einem Literal verwenden. Also deine Antwort ist nein, das ist nicht möglich.

Sie können jedoch ein Literal verwenden, um alle statischen Schlüssel zu erstellen, und dann die dynamischen Schlüssel mit der Syntax [] hinzufügen. Das ist in der Regel schöner als die . oder [] Schreibweise für alle Elemente.

0

Da Sie für einen Einzeiler gefragt, dies versuchen:

var key = 'dynamic', obj = (function(o) { o[key]='foo'; return o;})({bar: 'baz'}); 

Diese obj gleich {bar: "baz", dynamic: "foo"}

1
machen

Es ist jetzt möglich dynamische Schlüssel in der Deklaration eines Javascript-Objekts zu verwenden, in jedem Browser/Plattform, die ES6 wörtliche Kürzel unterstützt:

key = "dynamic";  
arr2 = { 
    [key]: "foo", // "dynamic": "foo" 
    "bar": "baz" 
}; 
Verwandte Themen