Como posso criar dinamicamente chaves em matrizes associativas javascript?
Toda a documentação que encontrei até agora é para atualizar chaves que já foram criadas:
arr['key'] = val;
Eu tenho uma string como esta " name = oscar "
E eu quero terminar com algo assim:
{ name: 'whatever' }
Ou seja, divido a string e obtenho o primeiro elemento, e quero colocar isso em um dicionário.
Código
var text = ' name = oscar '
var dict = new Array();
var keyValuePair = text.split(' = ');
dict[ keyValuePair[0] ] = 'whatever';
alert( dict ); // prints nothing.
javascript
associative-array
OscarRyz
fonte
fonte
Respostas:
Use o primeiro exemplo. Se a chave não existir, ela será adicionada.
Irá aparecer uma caixa de mensagem contendo 'oscar'.
Experimentar:
fonte
De alguma forma, todos os exemplos, embora funcionem bem, são muito complicados:
new Array()
, que é um exagero (e uma sobrecarga) para uma matriz associativa simples (dicionário AKA).new Object()
. Funciona bem, mas por que toda essa digitação extra?Esta pergunta está marcada como "iniciante", então vamos simplificar.
A maneira super simples de usar um dicionário em JavaScript ou "Por que o JavaScript não possui um objeto de dicionário especial?":
Agora vamos alterar os valores:
A exclusão de valores também é fácil:
fonte
Javascript não possui matrizes associativas , possui objetos .
As seguintes linhas de código fazem exatamente a mesma coisa - defina o campo 'name' em um objeto como 'orion'.
Parece que você tem uma matriz associativa porque uma
Array
também é umaObject
- no entanto, você não está realmente adicionando coisas à matriz, mas sim definindo campos no objeto.Agora que isso está esclarecido, aqui está uma solução funcional para o seu exemplo
fonte
Em resposta ao MK_Dev, é possível iterar, mas não consecutivamente. (Para isso, obviamente, é necessário um array)
Pesquisa rápida do Google exibe tabelas de hash em javascript
Exemplo de código para fazer loop sobre valores em um hash (do link mencionado acima):
fonte
Código original (eu adicionei os números das linhas para que eles possam se referir a eles):
Quase lá...
trim
texto assimname = oscar
.trim
na linha 1, use=
e apare cada keyValuePairadicione uma linha após 3 e antes de 4:
linha 4: Agora passa a:
linha 5: mude para:
O que estou tentando dizer é que
dict[keyValuePair[0]]
isso não funciona, você precisa definir uma stringkeyValuePair[0]
e usá-la como chave associativa. Essa é a única maneira que eu tenho o meu para trabalhar. Depois de configurá-lo, você pode consultá-lo com índice numérico ou digitar aspas.Espero que ajude.
fonte
Todos os navegadores modernos suportam um mapa , que é uma restrição de dados de chave / valor. Existem algumas razões que tornam o uso de um mapa melhor que o Object:
Exemplo:
Se você deseja que as chaves não referenciadas de outros objetos sejam coletadas como lixo, considere usar um WeakMap em vez de um Mapa.
fonte
Eu acho que é melhor se você acabou de criar assim
para mais informações, dê uma olhada neste
Estruturas de dados JavaScript - matriz associativa
fonte
isso está ok, mas itera por todas as propriedades do objeto array. se você deseja iterar apenas pelas propriedades myArray.one, myArray.two ... você tenta assim
agora você pode acessar o myArray ["one"] e iterar apenas por essas propriedades.
fonte
Array
eObject
trabalhar apenas comObject
árvores! Visão maravilhosa! É muito útil fazerObject.getOwnPropertyNames(obj/array)
!}
fonte