web-dev-qa-db-fra.com

javascript tableau associatif

En python, je pourrais faire quelque chose comme myMap = {key: [value1, value2]} puis accéder au value2 en utilisant myMap[key][1]

Puis-je faire quelque chose comme ça en javascript?

32
That Umbrella Guy

Eh bien, vous pouvez faire ceci:

var myMap = { key: [ value1, value2 ] };
var array = myMap.key; // or myMap["key"]

JavaScript n'a pas de type "tableau associatif", qui associe un comportement de "carte" à un comportement de tableau, comme le fait de garder trace du nombre de propriétés. Ainsi, la chose la plus commune à faire est d'utiliser un objet simple. Dans le langage JavaScript moderne actuel (2017), il existe une fonctionnalité explicite Map qui permet aux clés d'être de n'importe quel type, pas seulement des chaînes comme lors de l'utilisation d'objets simples.

JavaScript est un peu ridicule à propos de la notation littérale d'objet, en ce sens qu'il ne vous permet pas d'utiliser des mots réservés pour les clés à moins que vous ne les citiez:

var myMap = { 'function': 'hello world' };

La syntaxe quote permet d'utiliser n'importe quelle chaîne comme nom de propriété. Pour accéder à de telles propriétés, vous utiliseriez l'opérateur [ ]

console.log(myMap["function"]); // "hello world"
42
Pointy

Il est en effet.

var myMap = {london: ['clapham', 'chelsea'], bristol:['clifton', 'redland']}

alert(myMap.london[0]);
alert(myMap['bristol'][1]);

Voir cet exemple sur jsFiddle

9
Swaff

Oui, et la syntaxe est presque la même aussi.

var myMap = {key: ["value1", "value2"]};
alert(myMap["key"][1]); // pops up an alert with the Word "value2"

Vous pouvez également utiliser la notation suivante:

myMap.key[1]
8
Greg

Réponse courte ... oui ...

var m = { Foo : ["Bar", "Baz"] };

alert(m.Foo[0]);
alert(m["Foo"][1]);
5
Jimmy Chandra

Vous pouvez utiliser Map:

var myMap = new Map(); 
myMap.set('key','Value'); 
var res = myMap.get('key'); 

console.log(var); // Result is: 'Value'
0
Santo Boldižar