johny7: Arrays wie in PHP on the fly deklarieren

Moin allerseits,

ich stoße immer wieder auf den Umstand, dass ich Arrays vor der Wertzuweisung deklarieren muss. Wenn ich nun ein Array mit mehreren Ebenen habe a la STATUS['site']['kategorie']['dialoge']['formulare'] etc. muss ich sicherstellen, dass sämtliche Arrays vor ['formulare'] angelegt sind, bevor ich ein Wert zuweisen kann. Gibt es eine Funktion oder eine Methode, mit der man das automatisieren kann? Ist sonst lästig.

Mit PHP geht es ja auch

  
$myarray['froh']['sinn']['text'] = "Ich bin zufrieden!";  

ohne vorherige Deklaration.

Grüße, JN

--
ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
http://www.johny7.de
  1. in Javascript sollte folgendes funktionieren:

      
    var myarrray = {'froh': {'sinn': {'text': 'Ich bin zufrieden!'}}};  
    
    

    Das ist allerdings nicht das gleiche, denn eventuell vorhandene Werte werden hierbei überschrieben.

    Eine längere, aber sichererer Variante:

      
    var myarray = {};  
    //...  
      
    myarray.froh = myarray.froh || {};  
    myarray.froh.sinn = myarray.froh.sinn || {};  
    myarray.froh.sinn.text = 'Ich bin zufrieden!';  
    
    

    MfG
    ScaraX

    1. Moin allerseits,

      in Javascript sollte folgendes funktionieren:

      var myarrray = {'froh': {'sinn': {'text': 'Ich bin zufrieden!'}}};

      
      >   
      > Das ist allerdings nicht das gleiche, denn eventuell vorhandene Werte werden hierbei überschrieben.  
      
      Du meinst wohl, wenn myarray-froh.sinn bereits aus einem Array (text,bild, lächeln) bestand, wird dieses array überschrieben mit (text)?  
        
      Das ist natürlich nicht so gewünscht.  
        
      
      >   
      > Eine längere, aber sichererer Variante:  
      > ~~~javascript
        
      
      > var myarray = {};  
      > //...  
      >   
      > myarray.froh = myarray.froh || {};  
      > myarray.froh.sinn = myarray.froh.sinn || {};  
      > myarray.froh.sinn.text = 'Ich bin zufrieden!';  
      > 
      
      

      OK.

      Noch eine Frage:
      Mit PHP funktionieren Aufrufe wie

        
      $key = "Karl";  
      echo $frank[$key];  
      
      

      Wie kann ich das mit JS realisieren? Bisher habe ich mir umständlich mit eval beholfen.

      Grüße, JN

      --
      ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
      http://www.johny7.de
      1. Noch eine Frage:
        Mit PHP funktionieren Aufrufe wie

        $key = "Karl";
        echo $frank[$key];

        
        > Wie kann ich das mit JS realisieren? Bisher habe ich mir umständlich mit eval beholfen.  
          
        Das funktioniert in Javascript genauso.  
        ~~~javascript
          
        var key = 'Karl';  
        alert(frank[key]);  
        //ist identisch mit  
        alert(frank['Karl']);  
        //oder  
        alert(frank.Karl);  
        
        

        MfG
        ScaraX

      2. Hallo johny7,

        $key = "Karl";
        echo $frank[$key];

        
        > Wie kann ich das mit JS realisieren?  
          
        
        > ~~~javascript
          
        
        > key = "Karl";  
        > alert(frank[key]);  
        > 
        
        

        wobei es sich hier nicht um ein Array sondern um ein Objekt handelt.

        Gruß, Jürgen

        1. Moin allerseits,

          key = "Karl";
          alert(frank[key]);

          
          >   
          > wobei es sich hier nicht um ein Array sondern um ein Objekt handelt.  
          
          Weil ...?  
            
            
          Grüße, JN
          
          -- 
          ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)  
          http://www.johny7.de
          
          1. wobei es sich hier nicht um ein Array sondern um ein Objekt handelt.
            Weil ...?

            .. du eine Zeichenkette als Schlüssel verwendest. Das ist ein Objektzugriff.

            Ein Array ist auch ein Objekt, mit zusätzlicher Funktionalität, die in diesem Fall aber überflüssig ist und auch nicht benötigt wird.

            Struppi.

          2. Hi,

            wobei es sich hier nicht um ein Array sondern um ein Objekt handelt.
            Weil ...?

            „Weil das so ist“ - und sowas könntest du bitte auch mal selber nachlesen, bevor du fragst!
            http://de.selfhtml.org/javascript/objekte/array.htm#assoziative_arrays

            MfG ChrisB

            --
            RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?