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.

War es hilfreich?

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top