bandido: mehrdimensionales array und pop()

Hi Leute
Habe da ein problem mit einem 2-Dimensionalen array...

//erstellen
var suspendedNodes = new Array(highestid);
//Initialisierung

for (i = 0; i < suspendedNodes.length; i++)
{
  parent.data.suspendedNodes[i] = new Array();
}

//Pushen -> geht ohne Problem und kann auch ausgelesen werden
parent.data.suspendedNodes[id].push(startnodeHTML);

//poppen (ja,ja ich weiss, kicher, kicher) macht probleme
for (k = 0; k < parent.data.suspendedNodes[id].length; k++)
{
 parent.data.suspendedNodes[id].pop();
}

bei parent.data.suspendedNodes[id].pop(); erscheint die Fehlermeldung:
Unerwarteter Aufruf oder Zugriff
Liegts daran, dass es sich um ein 2.Dimensionales Array handelt???
Wieso funktioniert das pushen und das poppen nicht???
Vielen Dank im Voraus...

  1. Hi bandido,

    Abgesehen von etwas Verwirrung mit deinen Iterationsvariablen (mal i, mal k, mal id => check das mal ab), braucht es zum Poppen von Arrays ein besonderes Ambiente. Mit der for-Schleife

    for (k = 0; k < parent.data.suspendedNodes[id].length; k++)
    {
    parent.data.suspendedNodes[id].pop();
    }

    Ändert sich nach jedem Stoß der Wert von parent.data.suspendedNodes[id].length, so dass die Abbruchbedingung k < parent.data.suspendedNodes[id].length jedesmal anders ist.

    So geht's besser:
    while(parent.data.suspendedNodes[id].length)
    {
     parent.data.suspendedNodes[id].pop();
    }
    => Arrays lassen sich am besten in while-Schleifen poppen.

    Gruß, donp

  2. Hi bandido,

    Abgesehen vom bereits geschriebenen:
    pop() gibt den Wert des gepoppten Arrayelements zurück, den du aber gar nicht weiterverwendest. Versuch' also mal:

    void parent.data.suspendedNodes[id].pop();

    Vielleicht hilft es ja...

    Gruß, donp