necesito hacer un diccionario en javascript como este
No recuerdo la notación exacta, pero era algo como:
states_dictionary={ CT=[alex,harry], AK=[liza,alex], TX=[fred, harry] ........ }
¿Existe tal cosa en javascript?
javascript
python
l --''''''--------- '' '' '' '' '' '
fuente
fuente
Respuestas:
Esta es una publicación antigua, pero pensé que debería proporcionar una respuesta ilustrada de todos modos.
Utilice la notación de objetos de JavaScript. Al igual que:
Y para acceder a los valores:
o puede usar la notación de objeto literal de JavaScript, por lo que las claves no requieren estar entre comillas:
fuente
Object.hasOwnProperty.call(dictionary, key)
(de lo contrario, el usuario puede ingresar un valor de valueOf ydictionary['valueOf']
devuelve laObject.valueOf()
función que pertenece al prototipo de Object, que probablemente no sea lo que su código esperaría: error potencial o problema de seguridad ). Si la clave no es un tipo de cadena, entonces se debe tener cuidado, de lo contrario, las conversiones numéricas implícitas y toString le causarán problemas. ElMap
tipo ES6 se ha diseñado para proporcionar una funcionalidad ampliada para los diccionarios.No hubo matrices asociativas reales en Javascript hasta 2015 (lanzamiento de ECMAScript 6). Desde entonces, puede utilizar el objeto Map como indica Robocat. Busque los detalles en MDN . Ejemplo:
Sin soporte para ES6, puede intentar usar objetos:
Sin embargo, con los objetos no es posible utilizar propiedades de matriz o métodos típicos como array.length. Al menos es posible acceder a la "matriz de objetos" en un bucle for-in.
fuente
Me doy cuenta de que esta es una pregunta antigua, pero aparece en Google cuando busca 'diccionarios javascript', por lo que me gustaría agregar a las respuestas anteriores que en ECMAScript 6,
Map
se introdujo el objeto oficial , que es un diccionario implementación:A diferencia de los objetos normales de javascript, permite cualquier objeto como clave:
fuente
dict = { key: value)
?He creado un diccionario simple en JS aquí:
La implementación anterior ahora se puede usar para simular un diccionario como:
Esta es solo una simulación básica. Se puede optimizar aún más implementando un mejor algoritmo de tiempo de ejecución para trabajar en al menos O (nlogn) complejidad de tiempo o incluso menos. Como fusión / clasificación rápida en matrices y luego algunas búsquedas B para búsquedas. No probé ni busqué sobre el mapeo de una función hash en JS.
Además, la clave y el valor del objeto JSdict se pueden convertir en variables privadas para ser engañosas.
¡Espero que esto ayude!
EDITAR >> Después de implementar lo anterior, personalmente utilicé los objetos JS como matrices asociativas que están disponibles de fábrica.
sin embargo , me gustaría hacer una mención especial sobre dos métodos que en realidad resultaron útiles para convertirlo en una práctica experiencia de tabla hash.
Viz: dict.hasOwnProperty (clave) y eliminar dict [clave]
Lea esta publicación como un buen recurso sobre esta implementación / uso. Crear claves dinámicamente en una matriz asociativa de JavaScript
¡Gracias!
fuente
Utilice objetos JavaScript. Puede acceder a sus propiedades como claves en un diccionario. Esta es la base de JSON. La sintaxis es similar a la de los diccionarios de Python. Ver: JSON.org
fuente
Una vieja pregunta, pero recientemente necesitaba hacer un puerto AS3> JS, y en aras de la velocidad escribí un objeto Diccionario simple estilo AS3 para JS:
http://jsfiddle.net/MickMalone1983/VEpFf/2/
Si no lo sabía, el diccionario AS3 le permite usar cualquier objeto como clave, en lugar de solo cadenas. Son muy útiles una vez que les ha encontrado un uso.
No es tan rápido como lo sería un objeto nativo, pero no he encontrado ningún problema significativo en ese sentido.
API:
fuente
Firefox 13+ proporciona una implementación experimental del
map
objeto similar aldict
objeto en Python. Especificaciones aquí .Solo está disponible en Firefox, pero se ve mejor que usar atributos de
new Object()
. Cita de la documentación:fuente