Javascript: Iterate über Objekt-Literalwerte
Habe ich ein standard-jQuery-plugin eingerichtet, erstellt die default-Einstellungen an der Spitze:
jQuery.fn.myPlugin = function(options) {
var defaults = {
starts: "0px,0px",
speed: 250, ...
};
o = $.extend(defaults, options);
}
Habe ich noch eine variable namens numberOfObjects
.
Ich versuche, eine Schleife durch den Standard-Variablen. Für jedes Gefundene Objekt (aus numberOfObjects
) ich duplizieren müssen den Wert der Variablen Wert. Also, wenn die numberOfObjects
variable 3 ist, wird die defaults.starts
sollte 0px,0px > 0px,0px > 0px,0px
. Die > wird verwendet, um split-Werte.
Dies ist, was ich derzeit habe. X
stellt den Namen der Variablen innerhalb Standardwerte. Y
stellt die variable für den aktuellen Wert von x
. Ich habe so weit gekommen und haben keine Ahnung, was als Nächstes zu tun ist.
for (x in defaults) { //x is defaults.x
defaults.x = defaults.x + " > y";
}
InformationsquelleAutor der Frage Aaron | 2012-02-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Oder mit jQuery:
InformationsquelleAutor der Antwort Petah
Sollten Sie nicht davon abhängen, jQuery.
Mozilla-Entwickler-Dokumentation - https://developer.mozilla.org
Polyfill für ältere Browser
Ansicht der Performance-Ergebnisse - https://jsperf.com
InformationsquelleAutor der Antwort Blair Anderson
Beste Vorgehensweise ist, um zu überprüfen, ob das Objekt, Attribut, wird der Iteration ist vom Objekt selbst und nicht vererbt aus der Prototyp-Kette. Sie können dies überprüfen, mithilfe .hasOwnProperty(): (natürlich wenn Sie wollen, zu zählen vererbten Eigenschaften entfernen Sie einfach die if-Anweisung).
Hier ist der Allgemeine Fall:
Hier ist das Beispiel-Fall erwähnt, wo Sie wollen, um ein Duplikat zu erstellen-Objekt mit dem Wert jeder einzelnen Taste dupliziert (repliziert nach dem Wert der var
numberofobjects
(ich habe in zwei Lösungen, wobei Sie entweder ändern Sie das vorhandene Objekt oder einen neuen erstellen):InformationsquelleAutor der Antwort David Anderton
Let ' s setup-unsere basic-Objekt, bevor wir loslegen:
Können wir mit dem Objekt.Schlüssel(x) gibt ein array aller Schlüssel in unserem Objekt.
Nun sind wir in der Lage, map, filter, reduce und Schleife über das array und tun Sie etwas mit diesem Wert in unserem Objekt:
Den main mitnehmen hier ist, dass wir den Schlüssel verwenden, um Zugriff auf die bestimmten Wert, es funktioniert, aber es fühlt sich ein wenig klobig. ES2017 mit sich bringt
Object.values()
die verwendet werden können, als eine nette Abkürzung für die Rückgabe ein array aller Werte innerhalb einesObject
.Lesen Sie mehr über das Objekt.Werte() bei MDNenthalten Sie auch einen polyfill, sollten Sie brauchen, um die Unterstützung für ältere Browser & Browser, die Sie noch nicht umgesetzt.
InformationsquelleAutor der Antwort Kristian Roebuck
In Ihrem code:
Müssen Sie sagen
defaults[x]
stattdefaults.x
.x
ist eine variable halten ein string, der den Schlüssel in derdefaults
Objekt, und die Klammer (array-Stil) - syntax können Sie verwenden Sie diese variable, um das Eigentum. Mit der dot-notationdefaults.x
ist auf der Suche nach einer Immobilie heißt eigentlich "x", das äquivalent vondefaults["x"]
.InformationsquelleAutor der Antwort nnnnnn