den Code unten vor:Problem mit Javascript For-Schleife
function splicer()
{
var arrayElements = ["elem1","elem2","elem3","elem4"];
for(var index in arrayElements)
{
arrayElements.splice(index,1);
}
alert("Elements: "+arrayElements);
}
Die obige Funktion soll alle Elemente "arrayElements"
aus dem Array entfernen. Aber es wird nicht.
Javascript-Engine behält die "index"
, wie es ist und nichts dagegen, das Array geändert wird. Menschen könnte so etwas wie "for each"
Schleife erwarten, dass diese Art von Problem hat
auch den folgenden Code scheint nicht zu funktionieren:
function splicer()
{
...
for(var index in arrayElements)
{
arrayElements.splice(index--,1);
}
...
}
selbst wenn der Wert der Variablen „Index“ zu ändern scheint nicht zu funktionieren. Der geänderte Wert ist innerhalb des "for (...) {...}" Blocks verfügbar, aber wenn die Schleife die nächste Iteration erreicht, wird der Wert zurückgesetzt und läuft vom nächsten Index als Uhrwerk weiter.
so scheint es, Code wie könnte dies die einzige Lösung sein:
function splicer()
{
var arrayElements = ["elem1","elem2","elem3","elem4"];
for(var index=0;index<arrayElements.length;index++)
{
arrayElements.splice(index--,1);
}
alert("Elements: "+arrayElements);
}
Geprüft: Firefox 16 Beta.
Aber ein unärer Operator innerhalb einer Methode "splice()"
Platzierung scheint auf den ersten Blick irreführend.
Dies könnte eine Überlegung wert sein, die "W3C"
oder wen auch immer es angeht, so dass sie mit einer schönen Lösung kommen.
Mögliche Duplikat http://stackoverflow.com/questions/500504/javascript-for-in-with-arrays –