Hallo Tom.
Das habe ich selbstverständlich aus Selfhtml rausgesucht. Nur irgendwie geht mir die Erklärung dazu nicht in den Kopf. Außerdem habe ich noch keine Vorstellung von den "Arrays" unter Javascript. Sind das ebensolche verkettete Listen, wie in PHP?
Siehe die fachlich korekte Erklärung.
Wie kann ich gezielt ein Element entfernen, dessen Inhalt ungültig geworden ist? Der Index wird in einer "for in Schleife" ermittelt.
Du durchläufst das Array, wendest auf jedes Element deine Gültigkeitsregel an, und löscht ungültige Elemente. Vergiss aber nicht, im Löschensfall den Index um 1 zurück zu zählen, da alle auf das gelöschte Element folgenden Elemente automatisch eins nach vorn rutschen.
Beispiel 1: entfernt nur das erste vorkommende Element
<script type="text/javascript">
<!--
var Zahlen = new Array(1,2,3,3,4,5);
for(i=0;i<Zahlen.length;i++) {
if(Zahlen[i] == 3) {
Zahlen.splice(i,1);
}
}
alert(Zahlen.join(",")); // 1,2,3,4,5
//-->
</script>
Beispiel 2: entfernt jedes übereinstimmende Element
<script type="text/javascript">
<!--
var Zahlen = new Array(1,2,3,3,4,5);
for(i=0;i<Zahlen.length;i++) {
if(Zahlen[i] == 3) {
Zahlen.splice(i,1);
}
}
alert(Zahlen.join(",")); // 1,2,4,5
//-->
</script>
Aber um welchen Index handelt es sich hier?
Den Index _vor_ dem Löschen.
Was ist mit den beiden Randelementen?
Das vorher gehende behält seine Indexnummer, alle nachfolgenden rutschen sozusagen eins nach vorn.
Angenommen, ich ermittele, dass bereits das erste Element (wahrscheinlich mit Position 0 ?) entfernt werden muss. Was muss ich dann in slice() einsetzen?
Du meinst sicher splice(). Dann schreibe Array.splice(0,1).
Freundschaft!
Siechfred
Nichts ist schwerer einzureißen als die Mauer in den Köpfen.