3 Stimmen

was ist for....in Anweisung in Javascript

Kann jemand erklären, wie man for...in-Anweisung in Javascript verwenden. Ich hatte die w3school Artikel gelesen, aber ich denke, es ist nicht so clear.below ist der Code, bitte erklären Sie dies:

<html>
<body>
<script type="text/javascript">
var x;
var mycars = new Array();
mycars[10] = "Saab";
mycars[20] = "Volvo";
mycars[30] = "BMW";

for (x in mycars)
{
document.write(mycars[x] + "<br />");
}
</script>
</body>
</html>

7voto

SLaks Punkte 832502

A for in Schleife durchläuft jede Eigenschaft eines Objekts.

In Ihrem Beispiel ist die x Variable durchläuft jede Eigenschaft in der mycars Objekt.

Wenn Sie Folgendes hinzufügen mycars.expensive = "Porsche"; findet sie auch das.


Beachten Sie, dass, wie von MDC , for in Schleifen sollten no verwendet werden, um durch gewöhnliche Arrays zu schleifen:

Auch wenn es verlockend sein mag als Möglichkeit zu verwenden, um über eine Array , Das ist eine schlechte Idee. [ ] for...in s iteriert über benutzerdefinierte Eigenschaften zusätzlich zu den Arrayelementen durchlaufen, also wenn Sie die nicht-ganzzahligen Eigenschaften des Arrays ändern oder nicht-positive Eigenschaften des Arrays ändern (z.B. durch Hinzufügen einer "foo" p oder sogar durch Hinzufügen einer Methode oder [ ] Array.prototype ) for...in s gibt den Namen Ihrer benutzerdefinierten Eigenschaften zusätzlich zu den numerischen Indizes zurück. Da außerdem die Reihenfolge der Iteration willkürlich ist, kann die Iteration über eines Arrays möglicherweise nicht die Elemente in numerischen Reihenfolge besuchen. [ ] eine traditionelle für Schleife mit einem numerischen inde über Arrays iteriert wird. Ähnliche Argumente könnten auch gegen die for...in überhaupt zu verwenden (zumindest ohne propertyIsEnumerable ( oder hasOwnProperty() Prüfungen), da es auch über Object.prototype durchläuft (was allerdings normalerweise nicht zu empfehlen ist, kann, wie im Fall von Array.prototype, nützlich sein kann durch den Benutzer erweitert werden kann, wo es keine Namespacing Probleme verursacht durch Einbindung von anderen Bibliotheken, die die die obigen Überprüfungen nicht durchführen können solchen Iterationen durchführen und wo sie sich sich der Auswirkungen einer solchen Erweiterung auf ihre eigene Verwendung von Iteratoren wie for...in).

1voto

Déjà vu Punkte 27104

Zuerst erstellen Sie eine Objekt mit 3 Elementen (und nicht einem Array)

  var mycars = new Object();
  mycars[10] = "Saab";
  mycars[20] = "Volvo";
  mycars[30] = "BMW";

donde 10 , 20 y 30 sind die Objekteigenschaften.
dann möchten Sie durch das Objekt navigieren, alle Eigenschaften besuchen und jeden mit einer Eigenschaft verbundenen Wert anzeigen.

Hier ist die [ for ( variabel in Objekt ) Ausdruck Javascript-Konstruktion eingreift:
En variabel wird auf die erste Eigenschaft des Objekts gesetzt, dann auf die zweite und dann auf die letzte. Versuchen Sie

  for (v in mycars) alert(v);

um zu sehen, wie es funktioniert, und auch dies

  for (v in mycars) alert("Property: "+v+", value: "+mycars[v]);

0voto

JSBձոգչ Punkte 39615

En for ... in Konstruktion iteriert über jedes Element innerhalb des Objekts auf der rechten Seite von in . In Ihrem Fall ist der Block unterhalb der for Anweisung wird einmal für jedes Auto in mycars .

0voto

Michael Lorton Punkte 40941

for in ist eine Art, Fehler zu vergraben, die spätere Generationen entdecken können. Wie bereits ausgiebig dargelegt wurde, führt die Anwendung auf ein Array zu einer Schleife über alle Elemente des Arrays, die Länge des Arrays und alle anderen Daten, die dem Array zugeordnet sind. Die Anwendung auf ein gewöhnliches Objekt ist besser, aber Sie sollten trotzdem die Indizes durch hasOwnProperty .

Besser ist es, eine vom Framework bereitgestellte Funktion wie die von jQuery zu verwenden $.each

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X