2016-05-29 16 views
5

Ich verstehe, dass es keine associative arrays in javascript, nur objects gibt.Wie erstellt man ein assoziatives Array in Javascript Literal Notation

Jedoch habe ich eine array mit String-Schlüssel erstellen können bracket notation wie folgt aus:

var myArray = []; 
myArray['a'] = 200; 
myArray['b'] = 300; 
console.log(myArray); //prints [a: 200, b: 300] 

so, ich will, ohne bracket notation

var myNewArray = [a: 200, b: 300]; //getting error - Unexpected token: 

diese auch nicht genau die gleiche Sache tun funktioniert

var myNewArray = ['a': 200, 'b': 300]; //same error, why can I not create? 
+0

Was ist falsch damit? 'var myNewArray = {'a': 200, 'b': 300};' – MT0

+0

@ MT0 - das funktioniert, aber ich versuche zu verstehen, warum es nicht mit Array-Notation [] funktioniert? –

+4

Sie möchten ein Objekt, kein Array. – SLaks

Antwort

4

Javascript hat keine assoziative Arrays beziehen, nur Objekte. Selbst JS-Arrays sind im Grunde nur Objekte, nur weil die Eigenschaftsnamen Zahlen (0,1, ...) sind.

Also zuerst auf den Code aussehen:

var myArray = []; // creating a new array object 
myArray['a'] = 200; // setting the attribute a to 200 
myArray['b'] = 300; // setting the attribute b 300 

Es ist wichtig zu verstehen, dass myArray['a'] = 200;identisch-myArray.a = 200; ist!

Also mit dem, was Sie wollen: Sie können kein Javascript-Array erstellen und keine Zahl Attribute in einer Anweisung übergeben.

Aber das ist wahrscheinlich nicht das, was Sie brauchen! Wahrscheinlich brauchen Sie nur ein JS-Objekt, was im Grunde dasselbe ist wie ein assoziatives Array, ein Wörterbuch oder eine Karte in anderen Sprachen: Es bildet Strings auf Werte ab. Und das kann leicht getan werden:

var myObj = {a: 200, b: 300}; 

Aber es ist wichtig zu verstehen, dass dies unterscheidet sich etwas von dem, was Sie getan haben. myObj instance of Array wird false zurückgeben, da myObj kein Vorgänger von Array in der Prototypkette ist.

+0

Javascript hat erstklassige Arrays, also keine –

+0

nein was? Sie sind erstklassig, aber immer noch als Objekte implementiert. Siehe '[] instanceof Object === true'! – Lux

+0

yep, alles ist ein Objekt in JS Land, außer Null –

1

Nun, Sie ein Array erstellen, die in der Tat ist ein Objekt.

var arr = []; 
arr.map; 
// function(..) 
arr['map']; 
// function(..) 

arr['a'] = 5; 

console.log(arr instanceof Object); // true 

Sie können Felder und Funktionen zu arr hinzufügen. Dabei spielt es keine „Einfügen“, um sie auf das Array allerdings (wie arr.push(...))

Sie auf ein Objektfeld mit [] Syntax

1

Arrays und Objekte sind verschiedene Dinge.

Für ein Objekt können Sie tun Dinge wie:

var obj = { "property1": "value1" }; 
obj.property2 = "value2"; 

Für Arrays, müssen Sie dies tun:

var arr = []; 
arr[0] = "value"; 
0

Sie Karte verwenden, können:

var arr = new Map([ 
    ['key1', 'User'], 
    ['key2', 'Guest'], 
    ['key3', 'Admin'], 
]); 
var res = arr.get('key2'); 
console.log(res); // The value is 'Guest' 
Verwandte Themen