Question

J'ai un options objet: options = {title : 'title1', name : 'name1', url : 'url1', etc.}

qui est passé en tant que paramètre à une fonction. Je suis en train de itérer sur cet objet, passer par une autre fonction evaluate, et stocker le résultat dans un autre opts objet, comme suit:

var opts = new Object();

$.each(options, function(key,value){
opts.key = evaluate(element, value);
});

Le evaluate(element,value) fonctionne très bien, mais le problème est que opts finit par ressembler à:

{key : eval(element,url1)}

au lieu de

{title : eval(element,title1), name : eval(element,name1), etc.}

C'est, key est transmis littéralement au lieu d'être évalué, et est écrasé à chaque itération avec la dernière propriété options.

Dois-je la bonne syntaxe dans ma ligne d'affectation? J'ai essayé aussi:

opts = {key : eval(element,val)}

qui a donné le même résultat que ci-dessus. Je peux aussi convertir l'objet d'un tableau dans l'itération de $.each. J'ai essayé plusieurs façons de le faire, aussi sans succès. Si quelqu'un peut me montrer cette voie, ce serait génial aussi.

(Ceci est un plugin jQuery, et je teste en utilisant Firebug dans Firefox).

Merci d'avance pour votre aide.

Était-ce utile?

La solution

Comme vous l'avez découvert c'est la clé littérale « clé »:

opts.key = evaluate(element, value);

Pour utiliser une utilisation dynamique des clés []:

opts[key] = evaluate(element, value);

Exemple spécifique:

var o = {};
o["test"] = "foo";
alert(o.test);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top