Christopher: Array leeren

Hi,

ich muss in meinem Script Arrays leeren können, weil bei jedem Durchlauf die Elemente neu zugeordnet werden. Dabei gerät alles durcheinander und ich kapier nicht, wieso es in Javascript keine Funktion wie unset() aus php gibt. Wie auch immer, eine Arraystruktur könnte wiefolgt ausschauen:

Array ([0] => Array([0] => 1, [1] => 16) [1] => 5 [2] => Array ([0] => 12 [1] => 19) )

In einem anderen Postings habe ich gelesen: (t Name der Array-variable)
while (t.length) t.pop()

Fand ich recht schick, aber scheint nicht zu klappen.

Kann mir jemand nen Tipp geben? Danke!

  1. Hallo Christopher,

    »» Hi,

    ich muss in meinem Script Arrays leeren können, weil bei jedem Durchlauf die Elemente neu zugeordnet werden.

    Dann initialisiere es doch einfach neu, nachdem Du es gelöscht hast.

    Die Methode pop() entfernt nur das letzte Element.

    Mit freundlichem Gruß
    Micha

    1. Die Arrays sind ja global. Wenn ich sie in einer Funktion mit delete lösche und danach neu deklariere; geschieht das nicht alles auf lokaler Ebene?

      Gibt es wie bei php (global $var_name) einen Aufruf, der die Variable als global verifiziert?

      1. Hallo Christopher

        Die Arrays sind ja global. Wenn ich sie in einer Funktion mit delete lösche und danach neu deklariere; geschieht das nicht alles auf lokaler Ebene?

        Nur, wenn du sie mit var deklarierst.

        (s. Variablen und Werte dort unter "Erläuterung")

        Auf Wiederlesen
        Detlef

        --
        - Wissen ist gut
        - Können ist besser
        - aber das Beste und Interessanteste ist der Weg dahin!
        1. Mhm...

          wie würde ich denn, z.b., nur einen einzigen Eintrag aus dem Array entfernen. Nehmen wir an, das Array schaut wiefolgt aus:

          Array (
             [0] => 2
             [1] => 6
             [2] => 9
          )

          Ich habe jetzt vor, das Element 1 mit dem Wert 6 zu entfernen und die nachfolgenden Elemente eins "raufrutschen" zu haben.

          Gibt es dafür eine Funktion in JS?

          1. Hallo,

            Array (
               [0] => 2
               [1] => 6
               [2] => 9
            )

            Ich habe jetzt vor, das Element 1 mit dem Wert 6 zu entfernen und die nachfolgenden Elemente eins "raufrutschen" zu haben.

            Die splice()-Methode leistet das (wobei "raufrutschen" im obigen Sinn "runterrutschen" im Indexwert-Sinn bedeutet):

              
            var bla=[2,6,9];  
            bla.splice(1,1);  
            alert(bla); // 2,9
            

            MfG, Thomas

          2. wie würde ich denn, z.b., nur einen einzigen Eintrag aus dem Array entfernen. Nehmen wir an, das Array schaut wiefolgt aus:

            Array (
               [0] => 2
               [1] => 6
               [2] => 9
            )

            Das ist kein Array, sondern sieht eher nach einem Hash in Perl aus.
            entweder:
            var myArray = Array(2, 6, 9);
            oder
            var myArray = [2, 6, 9];

            Ich habe jetzt vor, das Element 1 mit dem Wert 6 zu entfernen und die nachfolgenden Elemente eins "raufrutschen" zu haben.

            Dafür gibt es keine Funktion musst du dir selber schreiben:

            Array.prototype.remove = function(nr)  
            {  
                for(var i = nr; i < this.length - 1; i++) this[i] = this[i + 1]  
                this.pop();  
                return this;  
            }  
            var a = [2,6,9];  
            a.remove(1);  
            alert(a);  
            
            

            Struppi.

      2. Hallo Christopher,

        »» Die Arrays sind ja global. Wenn ich sie in einer Funktion mit delete lösche und danach neu deklariere; geschieht das nicht alles auf lokaler Ebene?

        Nein, wenn es ein globales Objekt ist, sollt es natürlich nicht gelöscht werden. Es reicht ja, wenn Du es neu anlegst

        var globalesarray = new Array();
        //dann Deine Zuweisungen...

        function foo(){
          globalesarray = new Array();
        }

        Wenn Das Array in foo() neu initialisiert wurde, ist es, global noch bekannt aber inhaltslos - was Du ja wolltest. In der Funktion darfst Du das Array nur nicht neu anlegen mit "var", sonst wäre es ein lokles Array.

        Mit freundlichem Gruß
        Micha

  2. echo $begrüßung;

    ich muss in meinem Script Arrays leeren können,

    Wie wäre es mit: arrayvariable = new Array();

    echo "$verabschiedung $name";

  3. hallo,

    ich muss in meinem Script Arrays leeren können

    Was du unter "leeren" verstehst, müßtest du eventuell erläutern. Wenn dein Beispiel

    Array ([0] => Array([0] => 1, [1] => 16) [1] => 5 [2] => Array ([0] => 12 [1] => 19) )

    in Javascript so aussieht, daß du diesen Array einer Variablen zuweist:
      variable = newArray([0] => 1, [1] => 16) [1] => 5 [2] => Array ([0] => 12 [1] => 19) )
    (was mit dem Operator => schwierig werden könnte), kannst du anstelle des "Arrays" deine Variable ganz einfach neu füllen:
      variable = newArray(irgendetwas)

    In einem anderen Postings habe ich gelesen: (t Name der Array-variable)
    while (t.length) t.pop()
    Fand ich recht schick, aber scheint nicht zu klappen.

    Dazu müßtest du dein Problem vielleicht doch etwas genauer beschreiben.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|