Je comprends qu’il n’ya pas de associative arrays
dans javascript
, seulement objects
.
Cependant, je peux créer une array
avec des clés de chaîne en utilisant bracket notation
comme ceci:
var myArray = [];
myArray['a'] = 200;
myArray['b'] = 300;
console.log(myArray); //prints [a: 200, b: 300]
alors, je veux faire exactement la même chose sans utiliser bracket notation
var myNewArray = [a: 200, b: 300]; //getting error - Unexpected token:
cela ne marche pas non plus
var myNewArray = ['a': 200, 'b': 300]; //same error, why can I not create?
JavaScript n'a pas de tableaux associatifs, mais uniquement des objets. Même les tableaux JavaScript ne sont fondamentalement que des objets, avec comme particularité que les noms de propriété sont des nombres (0,1, ...).
Alors regardez d'abord votre code:
var myArray = []; // creating a new array object
myArray['a'] = 200; // setting the attribute a to 200
myArray['b'] = 300; // setting the attribute b to 300
Il est important de comprendre que myArray['a'] = 200;
est identique à myArray.a = 200;
!
Donc, pour commencer avec ce que vous voulez: Vous ne pouvez pas créer de tableau javascript et ne lui transmettre aucun attribut numérique dans une seule instruction.
Mais ce n'est probablement pas ce dont vous avez besoin! Vous avez probablement besoin simplement d'un objet JS, ce qui est fondamentalement la même chose qu'un tableau, un dictionnaire ou une carte associative dans d'autres langues: Il mappe les chaînes en valeurs. Et cela peut être fait facilement:
var myObj = {a: 200, b: 300};
Mais il est important de comprendre que cela diffère légèrement de ce que vous avez fait. myObj instanceof Array
retournera false
, car myObj
n'est pas un ancêtre de Array
dans la chaîne de prototypes.
Vous pouvez utiliser Map:
var arr = new Map([
['key1', 'User'],
['key2', 'Guest'],
['key3', 'Admin'],
]);
var res = arr.get('key2');
console.log(res); // The value is 'Guest'
Eh bien, vous créez un tableau, qui est en fait un objet.
var arr = [];
arr.map;
// function(..)
arr['map'];
// function(..)
arr['a'] = 5;
console.log(arr instanceof Object); // true
Vous pouvez ajouter des champs et des fonctions à arr
. Cela ne les "insère" pas dans le tableau (comme arr.Push(...)
)
Vous pouvez faire référence à un champ d'objet avec la syntaxe []
Vous voulez utiliser un objet dans ce cas
var myObject = {'a' : 200, 'b' : 300 };
Cette réponse renvoie à une explication plus détaillée: Comment faire un tableau associatif/hachage en JavaScript ( http://blog.xkoder.com/2008/07/10/javascript-associative-arrays-demystified/ )
Les tableaux et les objets sont des choses différentes.
Pour un objet, vous pouvez faire des choses comme:
var obj = { "property1": "value1" };
obj.property2 = "value2";
Pour les tableaux, vous devez faire ceci:
var arr = [];
arr[0] = "value";