2083 Stimmen

Warum ist es keine gute Idee, "for...in" für die Iteration von Arrays zu verwenden?

Ich wurde darauf hingewiesen, dass ich in JavaScript for...in nicht mit Arrays verwenden soll. Warum?

54 Stimmen

Ich habe die kürzlich gestellte Frage gesehen, bei der jemand das zu Ihnen gesagt hat, aber sie meinten nur für Arrays. Es gilt als schlechte Praxis, durch Arrays zu iterieren, aber nicht unbedingt für die Iteration durch Elemente eines Objekts.

22 Stimmen

Viele Antworten mit "for" -Schleifen wie 'for (var i=0; i

3 Stimmen

@MarkSchultheiss Aber das ist eine Rückwärtsschleife. Gibt es eine andere Version der Vorwärtsschleife, die schneller ist?

2voto

Badr Elmers Punkte 1217

Da JavaScript-Elemente als Standardobjekteigenschaften gespeichert sind, ist es nicht ratsam, JavaScript-Arrays mit for...in-Schleifen zu durchlaufen, da normale Elemente und alle aufzählbaren Eigenschaften aufgelistet werden.

Von https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Indexed_collections

1voto

jcomeau_ictx Punkte 36287

Auch wenn diese Frage nicht explizit behandelt wird, würde ich hinzufügen, dass es ein sehr guter Grund ist, niemals for...in mit einem NodeList zu verwenden (wie man es von einem querySelectorAll-Aufruf erhalten würde), da es die zurückgegebenen Elemente überhaupt nicht sieht, sondern nur über die NodeList-Eigenschaften iteriert.

Im Fall eines einzelnen Ergebnisses bekam ich:

var nodes = document.querySelectorAll(selector);
nodes
 NodeList [a._19eb]
for (node in nodes) {console.log(node)};
VM505:1 0
VM505:1 length
VM505:1 item
VM505:1 entries
VM505:1 forEach
VM505:1 keys
VM505:1 values

was erklärt, warum mein for (node in nodes) node.href = newLink; fehlschlug.

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