Problema com map javascript [RESOLVIDO]

4 respostas
mauricioadl

pessoal, boa tarde!

Estou tentando usar um map javascript, porem preciso que o nome da chave seja uma variavel, exemplo:

var chave = minha_chave;

var objeto = um objeto qualquer;

var map = {chave : objeto};

alguem sabe se eh possivel fazer algo assim?

OBS: esse codigo que eu coloquei nao funciona. rss

4 Respostas

thiagof

De uma forma rápida?? com gambiarra :smiley:

var chave = "minha_chave"; var objeto = "um objeto qualquer"; var map = null; eval("map = {" + chave + " : '" + objeto + "' } ");

Agora esse código funciona :smiley:

mas fiquei até sem jeito de estar te ensinando isso :oops:

o pessoal lutando para abolir o uso do eval() e eu tentando ajudar com algo ruim :frowning:

thiagof

Ufa, depois de pesquisar, encontrei o jeito certo de fazer :smiley:

var map = new Object(); map["minha_chave"] = "um objeto qualquer"; console.log(map); console.log(map.minha_chave);

agora funfa!
testa ai no console do firebug pra vc ver :wink:

mauricioadl

eae thiagão, beleza cara?!?! mais uma vez obrigado pelas dicas!

entao, acabei resolvendo usando array em vez de map

// assim funciona
map = {“nome_da_chave”: “objeto_qualquer”}

//assim nao funciona

var v = nome_da_chave;

map = {v : objeto_qualquer}
so que meu problema é que o nome da chave eh uma variavel, e o javascript nao aceita passar a variavel como nome, mas com array vai de boa, entao:

var v = nome_da_chave;

array[v] = objeto_qualquer;

falta de pensar um pouco. vespera de feriado prolongado eh assim mesmo! kkkk

um grande abraço

thiagof

E aii Mauricio! blz!!!

Em js as propriedades e Arrays estão relacionados!

na verdade, um array tem um indice numerico = [0,1,2,3,…]
e os indices alfanumericos = array[“nome_da_chave”] são na verdade propriedades do objeto array e podem ser referenciados desse jeito tambem: array.nome_da_chave

repare que o inverso não é verdadeiro… tipo isso:
array.1 // para pegar o elemento no indice 1 do array
nao funciona!!!

se vc der um comando tipo esse no firebug: console.log(array);
vc vai ver que ele vai te mostrar um array sem nenhum indice ( array = [] ) e com uma propriedade chamada nome_da_chave tipo isso:

console.log(array);
te retorna isso:

tanto é que se vc fizer esse teste no firebug: console.log(array.nome_da_chave);
vai ver que ele te retorna o valor do atributo :smiley:

Criado 27 de abril de 2012
Ultima resposta 27 de abr. de 2012
Respostas 4
Participantes 2