j'ai besoin de faire un dictionnaire en javascript comme celui-ci
je ne me souviens pas de la notation exacte, mais c'était quelque chose comme:
states_dictionary={ CT=[alex,harry], AK=[liza,alex], TX=[fred, harry] ........ }
existe-t-il une telle chose en javascript?
javascript
python
l --''''''--------- '' '' '' '' '' '
la source
la source
Réponses:
C'est un ancien article, mais j'ai pensé que je devrais quand même fournir une réponse illustrée.
Utilisez la notation d'objet de javascript. Ainsi:
Et pour accéder aux valeurs:
ou vous pouvez utiliser la notation d'objet littérale javascript, dans laquelle les clés ne doivent pas être entre guillemets:
la source
Object.hasOwnProperty.call(dictionary, key)
(sinon l'utilisateur peut entrer une valeur de valueOf etdictionary['valueOf']
renvoie laObject.valueOf()
fonction appartenant au prototype Object qui n'est probablement pas ce à quoi votre code s'attendrait - bug potentiel ou problème de sécurité ). Si la clé n'est pas de type chaîne, alors des précautions doivent être prises, sinon les conversions numériques implicites et toString vous poseront des problèmes. LeMap
type ES6 a été conçu pour fournir des fonctionnalités étendues aux dictionnaires.Il n'y avait pas de véritables tableaux associatifs en Javascript jusqu'en 2015 (sortie d'ECMAScript 6). Depuis lors, vous pouvez utiliser l'objet Map comme états Robocat. Recherchez les détails dans MDN . Exemple:
Sans prise en charge d'ES6, vous pouvez essayer d'utiliser des objets:
Cependant, avec les objets, il n'est pas possible d'utiliser des propriétés ou des méthodes typiques de tableau comme array.length. Au moins, il est possible d'accéder au "object-array" dans une boucle for-in-loop.
la source
Je me rends compte que c'est une vieille question, mais elle apparaît dans Google lorsque vous recherchez des `` dictionnaires javascript '', j'aimerais donc ajouter aux réponses ci-dessus que dans ECMAScript 6, l'
Map
objet officiel a été introduit, qui est un dictionnaire la mise en oeuvre:Contrairement aux objets normaux de javascript, il autorise n'importe quel objet comme clé:
la source
dict = { key: value)
?J'ai créé un dictionnaire simple en JS ici:
L'implémentation ci-dessus peut maintenant être utilisée pour simuler un dictionnaire comme:
Ceci est juste une simulation de base. Il peut être encore optimisé en implémentant un meilleur algorithme de temps d'exécution pour fonctionner avec une complexité de temps au moins O (nlogn) ou même moins. Comme la fusion / tri rapide sur les tableaux, puis une recherche B pour les recherches. Je n'ai pas essayé ou cherché à mapper une fonction de hachage dans JS.
De plus, la clé et la valeur de l'objet JSdict peuvent être transformées en variables privées pour être sournoises.
J'espère que cela t'aides!
EDIT >> Après avoir implémenté ce qui précède, j'ai personnellement utilisé les objets JS en tant que tableaux associatifs disponibles prêts à l'emploi.
toutefois , je voudrais faire une mention spéciale sur deux méthodes qui se sont avérées utiles pour en faire une expérience de hachage pratique.
Viz: dict.hasOwnProperty (clé) et supprimer dict [clé]
Lisez cet article comme une bonne ressource sur cette implémentation / utilisation. Création dynamique de clés dans un tableau associatif JavaScript
Merci!
la source
Utilisez des objets JavaScript. Vous pouvez accéder à leurs propriétés comme des clés dans un dictionnaire. C'est le fondement de JSON. La syntaxe est similaire aux dictionnaires Python. Voir: JSON.org
la source
Une vieille question mais j'ai récemment eu besoin de faire un port AS3> JS, et pour des raisons de vitesse, j'ai écrit un simple objet Dictionary de style AS3 pour JS:
http://jsfiddle.net/MickMalone1983/VEpFf/2/
Si vous ne le saviez pas, le dictionnaire AS3 vous permet d'utiliser n'importe quel objet comme clé, par opposition à de simples chaînes. Ils sont très utiles une fois que vous avez trouvé une utilisation pour eux.
Ce n'est pas aussi rapide qu'un objet natif le serait, mais je n'ai trouvé aucun problème significatif avec lui à cet égard.
API:
la source
Firefox 13+ fournit une implémentation expérimentale de l'
map
objet similaire à l'dict
objet en python. Spécifications ici .Il n'est disponible que dans Firefox, mais il est meilleur que d'utiliser les attributs d'un
new Object()
. Citation de la documentation:la source