jQuery iterieren Objekt mit $ .each
Frage
Ich habe ein Objekt options
: options = {title : 'title1', name : 'name1', url : 'url1', etc.}
, die als Parameter an eine Funktion übergeben wird. Ich versuche, über das Objekt zu durchlaufen, führt es durch eine andere Funktion evaluate
, und das Ergebnis in einem anderen Objekt opts
, etwa so:
var opts = new Object();
$.each(options, function(key,value){
opts.key = evaluate(element, value);
});
Die evaluate(element,value)
funktionieren gut, aber das Problem ist, dass opts
endet aussehen wie:
{key : eval(element,url1)}
statt
{title : eval(element,title1), name : eval(element,name1), etc.}
Das heißt, key
wahrsten Sinne des Wortes statt ausgewertet übergeben wird, und wird mit jeder Iteration mit dem letzten Objekt in options
überschrieben.
Habe ich die richtige Syntax in meiner Zuordnungslinie haben? Ich habe auch versucht:
opts = {key : eval(element,val)}
, die wie oben das gleiche Ergebnis gab. Ich kann auch das Objekt in einem Array innerhalb der $.each
Iteration konvertieren. Ich habe mehr Möglichkeiten versucht, dies zu tun, auch ohne Erfolg. Wenn mir jemand diesen Weg zeigen kann, das wäre zu groß sein.
(Dies ist eine jQuery-Plugin, und ich bin Tests mit Firebug in Firefox).
Vielen Dank im Voraus für Ihre Hilfe.
Lösung
Wie Sie entdeckt haben, das ist die wörtliche Taste ‚Schlüssel‘:
opts.key = evaluate(element, value);
Um einen dynamischen Schlüssel Verwendung []
zu verwenden:
opts[key] = evaluate(element, value);
Konkretes Beispiel:
var o = {};
o["test"] = "foo";
alert(o.test);