[JavaScript] Syntax bei assoziativen Arrays

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [JavaScript] Syntax bei assoziativen Arrays

    hi, ich würde gerne wissen, wie die Syntax bei assoziativen arrays in JavaScript ist.

    meine Methode new Array("mein_index"=>"mein_wert"); funktioniert in JS nicht so wie in PHP. Deswegen meine Frage wie geht das?

    Oder ist das die einzigste möglichkeit:

    mein_array['mein_index']['ansprechen'] = "hallo";
    mein_array['mein_index']['person'] = "du";
    mein_array['mein_index']['typ'] = "monster";

    mein_array['mein_index_2']['irgendwas'] = "blabla";
    mein_array['mein_index_2']['irgendwas_anderes'] = "blabla2";

    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

  • #2
    Für Listen gibbet ja [wert1, wert2, usw.]
    für assoziative Arrays habe ich noch nichts dergleichen gesehen.

    Um Tipparbeit zu sparen, könnte man eine Funktion mit variabler Parameterliste basteln, aber ansonsten ...

    PHP-Code:
    function assoc()
    {
      var 
    ar = new Array();
      for (var 
    i=0assoc.arguments.lengthi+=2)
        
    ar[assoc.arguments[i]] = assoc.arguments[i+1];
      return 
    ar;
    }
    mein_array assoc(
      
    'mein_index'assoc(
        
    'ansprechen''hallo',
        
    'person''du',
        
    'typ''monster'
      
    ),
      
    'mein_index_1'assoc(
        
    'irgendwas''blabla',
        
    'irgendwas_anderes''blabla2'
      
    )
    ); 
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      @titus: gut, dein beispiel würde zwar funktionieren, ist aber doch überdemensioniert. der js code wird per php geschrieben, daher werde ich wohl doch meinen weg gehen, wie ichs oben schon geschrieben habe, die "index"=>"wert" methode wäre natürlich schöner im quelltext anzusehen, aber wenns halt net geht kann man da nichts machen.

      trotzdem danke für den code und die mühe
      Sunshine CMS
      BannerAdManagement
      Borlabs - because we make IT easier
      Formulargenerator [color=red]Neu![/color]
      Herkunftsstatistik [color=red]Neu![/color]

      Kommentar


      • #4
        Javscript

        ein array der so aufgebaut ist

        mein_array['mein_index']['ansprechen'] = "hallo";
        mein_array['mein_index']['person'] = "du";
        mein_array['mein_index']['typ'] = "monster";

        lässt net seinen inhalt zählen => mein_array['mein_index'].length
        Sunshine CMS
        BannerAdManagement
        Borlabs - because we make IT easier
        Formulargenerator [color=red]Neu![/color]
        Herkunftsstatistik [color=red]Neu![/color]

        Kommentar


        • #5
          Original geschrieben von Benny-one
          lässt net seinen inhalt zählen => mein_array['mein_index'].length
          funktioniert es dann, wenn du diese "zweite ebene" vorher auch explizit als array anlegst?

          mein_array['mein_index'] = new Array();
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Original geschrieben von Benny-one
            ein array der so aufgebaut ist

            mein_array['mein_index']['ansprechen'] = "hallo";
            mein_array['mein_index']['person'] = "du";
            mein_array['mein_index']['typ'] = "monster";

            lässt net seinen inhalt zählen => mein_array['mein_index'].length
            Original geschrieben von Benny-one
            der js code wird per php geschrieben
            PHP-Code:
            echo "mein_array['mein_index']['length'] = ".count($mein_array).';'
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              das ist js im vergleich zu php ziemlich mies, weil dort arrays keine listen sondern objekte sind. du mußt also für jeden teil deines arrays ein neues objekt erstellen. wenn du die anzahl der einträge auslesen willst, mußt du numerisch vorgehen.
              PHP-Code:
              mein_array = new Array();

              mein_array[0] = new Array();
              mein_array[0]['ansprechen'] = 'Hallo';
              mein_array[0]['person'] = 'du';
              mein_array[0]['typ'] = 'Monster';

              mein_array[1] = new Array();
              mein_array[1]['ansprechen'] = 'Tach';
              mein_array[1]['person'] = 'sie';
              mein_array[1]['typ'] = 'Hampelmann'
              gruß
              peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                noch einfacher:
                Code:
                var mein_array = [
                    {ansprechen:'Hallo', person:'du', typ:'Monster'},
                    {ansprechen:'Tach', person:'sie', typ:'Hampelmann'}
                ];
                das mit dem Zählen ist korrekt, da ein assoziatives Array nicht vom Typ Array ist sondern ein Objekt. Da length ja eine Eigenschaft vom Typ Array ist, wäre es unpraktisch, wenn JS automatisch jedem Objekt eine length-Eigenschaft geben würde... JS würde das Objekt dann ja willkürlich anpassen Mit einem simplen for (key in arrayName) und einem i++ kann man die Einträge aber dennoch zählen
                Code:
                function countArray(arr) {
                    var i  = 0;
                    for(k in arr)
                        i++;
                    return i;
                }
                Oder man trickst ein bissel mit dem prototyping... allerdings müsste man dann ggf. in anderen Bereichen darauf achten, dass jedes Object diese Funktion hat:
                Code:
                Object.prototype.getLength = function() {
                    if (this.constructor == Object) {
                        var i = 0;
                        for (k in this) 
                            if (k != 'getLength')
                                i++;
                        return i;
                    }
                    return false;
                }
                Gruss
                Jan
                www.traum-projekt.com

                Kommentar

                Lädt...
                X