Tony: array auf vorhandensein überprüfen

Hallo ihr da draussen..

Ich stehe vor einem kleinen Problem, welches mich jetzt schon den ganzen Tag beschäftigt..
Also, es handelt sich um folgendes..:

Ich habe ein 2 Dimensionales Array:

  
captionArray = new Array;  

Soweit klar..

  
if(!isset(captionArray['bild1'][0]))  
{  
 captionArray['bild1'] = new Array;  
 captionArray['bild1'][0] = "Beschreibung blabla";  
}  

Der Code oben geht nicht.. Aber im Prinzip würde ich das gerne so realisieren.. Habt ihr da eine Idee? (Ich weiss, dass die isset-Funktion nicht in Javascript existiert.. Wie aber kann ich überprüfen, ob ein bestimmter Arrayeintrag schon gesetzt wurde..?

lg

  1. [latex]Mae  govannen![/latex]

    Der Code oben geht nicht.. Aber im Prinzip würde ich das gerne so realisieren.. Habt ihr da eine Idee? (Ich weiss, dass die isset-Funktion nicht in Javascript existiert.. Wie aber kann ich überprüfen, ob ein bestimmter Arrayeintrag schon gesetzt wurde..?

    Der typeof-operator kann helfen.

    Nicht gesetzt:

    captionArray = [];  
    var captionArray = new Array();  
    captionArray['bild1'] = [];  
    //captionArray['bild1'][0] = 'irgndwas';  
      
    if (captionArray && captionArray['bild1'] && typeof captionArray['bild1'][0] !== 'undefined') {  
     alert("Wert gesetzt");  
    }  
    else {  
     alert("nix");  
    }
    

    Gesetzt:

    captionArray = [];  
    var captionArray = new Array();  
    captionArray['bild1'] = [];  
    captionArray['bild1'][0] = 'irgndwas';  
      
    if (captionArray && captionArray['bild1'] && typeof captionArray['bild1'][0] !== 'undefined') {  
     alert("Wert gesetzt");  
    }  
    else {  
     alert("nix");  
    }  
    
    

    Cü,

    Kai

    --
    Ash nazg durbatulûk, ash nazg gimbatul,ash nazg thrakatulûk, agh burzum-ishi krimpatul
    selfcode sh:( fo:| ch:? rl:( br:< n4:# ie:{ mo:| va:) js:) de:> zu:) fl:( ss:| ls:?
    Mein Selfhtml-Kram
    1. [latex]Mae  govannen![/latex]

      captionArray = [];

      var captionArray = new Array();

        
      gna .. das hat man von copy&paste :(  
        
      Erste Zeile einfach nicht beachten  
        
        
      Cü,  
        
      [Kai](http://selfhtml.kaichen.in)
      
      -- 
      Ash nazg durbatulûk, ash nazg gimbatul,ash nazg thrakatulûk, agh burzum-ishi krimpatul  
        
      selfcode sh:( fo:| ch:? rl:( br:< n4:# ie:{ mo:| va:) js:) de:> zu:) fl:( ss:| ls:?  
      [Mein Selfhtml-Kram](http://selfhtml.kaichen.in)
      
      1. Guten Morgen!

        Also, ich danke euch herzlichst für eure Antworten..!

        if (captionArray && captionArray['bild1'] && typeof captionArray['bild1'][0] !== 'undefined') {  
         alert("Wert gesetzt");  
        }
        

        So habe ich das jetzt gelöst - und es funktioniert super :-) Dankeschön!

        lg
        tony

    2. var captionArray = new Array();
      captionArray['bild1'] = [];

      captionArray ist gar kein Array, jedenfalls bekommt er bis hier kein einziges Array-Element zugewiesen und hat demnach auch eine length von 0.

      »Assoziative Arrays« gibt es in JavaScript nicht. Bei der obigen Zuweisung wird eine Objekteigenschaft angelegt, aber kein Array-Element. Das geht, weil Arrays auch Objekte sind.

      Um Verwirrungen und spätere Überraschungen zu vermeiden, sollte man daher direkt caption = new Object() bzw. in der Kurzschreibweise caption = {}; verwenden.

      Mathias

  2. Hallo Du da drinnen,

    myarr = new Array(2);  
    myarr[0] = new Array(1);  
    myarr[0][0] = "Hallo";  
    myarr[0][1] = "Welt";  
      
    for (i=0; i<=3; i++)  
    {  
     if (myarr[0][i])  
     {  
      alert(myarr[0][i]);  
     }  
    } 
    

    Viel Spass.

    --
    Trau Dich!
     
  3. Hi,

    if(!isset(captionArray['bild1'][0]))

    analog geht hier:
    if (typeof captionArray[...] != "undefined")...

    oder Du nutzt einen try-catch block:

    try {

    if (captionArray['bild1'][0])...

    } catch (error) {
        // testout
        alert(error)
    }

    Gruesse, Joachim

    --
    Am Ende wird alles gut.