web-dev-qa-db-fra.com

comment créer un tableau associatif en notation littérale Javascript

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?
16
Wild Widow

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.

19
Lux

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'
7
Santo Boldižar

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 []

2
galchen

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/ )

1
httpNick

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";
1
developius