eu preciso fazer um dicionário em javascript como este
não me lembro da notação exata, mas era algo como:
states_dictionary={ CT=[alex,harry], AK=[liza,alex], TX=[fred, harry] ........ }
existe tal coisa em javascript?
javascript
python
eu--''''''---------''''''''''''
fonte
fonte
Respostas:
Esta é uma postagem antiga, mas achei que deveria fornecer uma resposta ilustrada de qualquer maneira.
Use a notação de objeto do javascript. Igual a:
E para acessar os valores:
ou você pode usar a notação de objeto literal javascript, em que as chaves não precisam estar entre aspas:
fonte
Object.hasOwnProperty.call(dictionary, key)
(caso contrário, o usuário pode inserir um valor de valueOf edictionary['valueOf']
retornar aObject.valueOf()
função pertencente ao protótipo do objeto que provavelmente não é o que seu código esperaria - bug potencial ou problema de segurança ) Se a chave não for um tipo de string, é necessário tomar cuidado, caso contrário, as conversões numérica e toString implícitas causarão problemas. OMap
tipo ES6 foi projetado para fornecer funcionalidade estendida para dicionários.Não havia matrizes associativas reais em Javascript até 2015 (lançamento do ECMAScript 6). Desde então, você pode usar o objeto Map como estados Robocat. Procure os detalhes no MDN . Exemplo:
Sem suporte para ES6, você pode tentar usar objetos:
No entanto, com objetos não é possível usar propriedades ou métodos de array típicos como array.length. Pelo menos é possível acessar o "objeto-array" em um for-in-loop.
fonte
Sei que essa é uma pergunta antiga, mas ela aparece no Google quando você pesquisa por 'dicionários de javascript', então gostaria de acrescentar às respostas acima que no ECMAScript 6, o
Map
objeto oficial foi introduzido, que é um dicionário implementação:Ao contrário dos objetos normais do javascript, ele permite qualquer objeto como uma chave:
fonte
dict = { key: value)
?Criei um dicionário simples em JS aqui:
A implementação acima agora pode ser usada para simular um dicionário como:
Esta é apenas uma simulação básica. Ele pode ser otimizado ainda mais através da implementação de um algoritmo de tempo de execução melhor para trabalhar em complexidade de tempo pelo menos O (nlogn) ou até menos. Como mesclar / classificação rápida em arrays e, em seguida, algumas pesquisas B para pesquisas. Não tentei ou pesquisei sobre o mapeamento de uma função hash em JS.
Além disso, a chave e o valor para o objeto JSdict podem ser transformados em variáveis privadas para serem sorrateiros.
Espero que isto ajude!
EDITAR >> Depois de implementar o acima, eu pessoalmente usei os objetos JS como arrays associativos que estão disponíveis prontos para uso.
No entanto , gostaria de fazer uma menção especial sobre dois métodos que realmente se mostraram úteis para torná-lo uma experiência hashtable conveniente.
Viz: dict.hasOwnProperty (key) e delete dict [key]
Leia esta postagem como um bom recurso sobre essa implementação / uso. Criação dinâmica de chaves em array associativo JavaScript
Obrigado!
fonte
Use objetos JavaScript. Você pode acessar suas propriedades como chaves em um dicionário. Esta é a base do JSON. A sintaxe é semelhante aos dicionários Python. Veja: JSON.org
fonte
Uma pergunta antiga, mas recentemente precisei fazer uma porta AS3> JS e, por uma questão de velocidade, escrevi um objeto Dicionário simples no estilo AS3 para JS:
http://jsfiddle.net/MickMalone1983/VEpFf/2/
Se você não sabia, o dicionário AS3 permite que você use qualquer objeto como chave, ao invés de apenas strings. Eles são muito úteis assim que você encontrar um uso para eles.
Não é tão rápido quanto um objeto nativo seria, mas não encontrei nenhum problema significativo com ele a esse respeito.
API:
fonte
O Firefox 13+ fornece uma implementação experimental do
map
objeto semelhante aodict
objeto em python. Especificações aqui .Só está disponível no firefox, mas parece melhor do que usar atributos de a
new Object()
. Citação da documentação:fonte