mordur: assoziatives Array Key aus Variable

moins,

ein assoziatives Array kann man ja so bilden:

var arr =new Array();  
arr[0]= new Array();  
arr[0] = { "KUNDE" : "Hans" };  
alert(arr[0]["KUNDE"]);  

ich erhalte: "Hans".

jetzt kommt der Schlüssel aber aus einem anderen Array (z.b. key[1] = "KUNDE" ).
Wenn ich also folgendes mache:

var arr =new Array();  
arr[0]= new Array();  
arr[0] = { key[1] : "Hans" };  
alert (Arr[0]["KUNDE"]);  
  

ich erhalte: "undefined";

wie bekomme ich sowas hin, das Variableninhalte als Keys akzeptiert werden

  1. @@mordur:

    nuqneH

    wie bekomme ich sowas hin, das Variableninhalte als Keys akzeptiert werden

    arr[0][key[1]] = "Hans";

    Qapla'

    --
    Bildung lässt sich nicht downloaden. (Günther Jauch)
  2. ein assoziatives Array kann man ja so bilden:

    kann man, ausser das es keine Array ist, da es diesen Datentyp in JS nicht gibt. Aber so einen ähnlichen, der nennt sich Objekt.

    var arr =new Array();

    arr[0]= new Array();

    Deshalb ist diese Zeile überflüssig.

    arr[0] = { "KUNDE" : "Hans" };

    Zumal du das Array hier mit einem Objekt einfach überschreibst.

    jetzt kommt der Schlüssel aber aus einem anderen Array (z.b. key[1] = "KUNDE" ).
    Wenn ich also folgendes mache:

    Das geht so natürlich nicht, da der Schlüssel immer ein String ist, du kannst das obige also auch so schreiben:
    [code lang=javascript]arr[0] = { KUNDE : "Hans" };

      
    Um als Schlüssel Variabeln zu benutzen, musst die direkte Schreibweise verwenden.  
      
    `arr[0][key[1]] = "Hans";`{:.language-javascript}  
      
    Struppi.
    
    1. ok, mein code ist jetzt so:

        
      // global array  
      var arr = new Array();  
      function getData(wert) {  
         var Werte = new Array();  
         Werte[0] = "handwerker";  
         Werte[1] = "mueller";  
         // etc. pp nur Bsp;  
        
        
         var kunden  = wert.split("#");  
         for(j=0;j<kunden.length;j++) {  
        
           var x = kunden[j].split(";");  
           arr[x[0]] = new Array();  
           var key = Werte[x[2]];  
           arr[x[0]][key]=x[1]; 	  
          }  
      }  
        
        
        
      function output(id){  
        
        alert (arr[id]['handwerker']);  
        
      }  
      
      

      Beim Laden der Webseite wird ein String an getData übergeben, der sieht so aus: 0;Hans;1#1;klaus;0#2;bert;1 usw.

      Beim Klicken auf einen Button wird output aufgerufen und zum Beispiel die ID 2 übergeben.

      Ich müsste als Ergebnis also "Bert" erhalten. Da steht allerdings undefined.
      Kann es sein, dass arr nicht als globales Array behandelt wird?

      1. var x = kunden[j].split(";");
             arr[x[0]] = new Array();

        Das ist kein Array!

        var key = Werte[x[2]];
        Beim Laden der Webseite wird ein String an getData übergeben, der sieht so aus: 0;Hans;1#1;klaus;0#2;bert;1 usw.

        Beim Klicken auf einen Button wird output aufgerufen und zum Beispiel die ID 2 übergeben.

        Ich müsste als Ergebnis also "Bert" erhalten. Da steht allerdings undefined.

        Bert ist mueller

        Struppi.