Christoph: Lieber Christof ;)

Beitrag lesen

Moin.

du verwirrst mich...

Mal sehen, ob man das nicht etwas entwirren kann ;)

  1. wenn man WP glauben darf ist AA der Standardbegriff für das was in verschiedenen Sprachen Hash, Hashmap, Hashtabelle, Directory, usw genannt wird (oder so).

Wikipedia, EN:
An associative array (also associative container, map, mapping, hash, dictionary, finite map, lookup table, and in query-processing an index or index file) [...]

Man beachte das Fehlen des Begriffs 'hash table'. Ich verwende diesen Begriff in seiner engeren Bedeutung, d.h. einer bestimmten Implementierung eines assoziativen Arrays mit einer Hash-Funktion, die einem Schlüssel eine natürliche Zahl zuordnet, die als Index eines Arrays zum Auffinden des Werts benutzt wird (der Mechanismus zur Auflösung von Kollisionen bleib unspezifiziert - separate/coalesced chaining, linear/quadratic probing, double hashing, ...)

  1. Als "typeof" eines Objektes in JS bekommt man "object",  der entspricht aber in der Semantik genau dem Datentyp  AA mit gewissen Defaulkeys. (type "function" jetzt mal außen vor)

Ja. In Javascript erbt _alles_ von Object.prototype (auch Funktionen). Das führt ja gerade zu den bereits diskutierten Problemen. Laut MDC wäre es theretisch möglich, dieses Verhalten per

  
 obj.__defineSetter__('__proto__', function(value) {  
  this['__proto__'] = value;  
 });  
 obj['__proto__'] = undefined;  

zu unterbinden. Leider wirft die Laufzeitumgebung beim setzen eines Setters für __proto__ einen Fehler.

  1. Um die Datenstruktur AA in JS zu realisieren, kann man den Datentyp "object" deswegen 1:1 heranziehen, muss aber syntaktischen Aufwand betreiben, weil dezidierte AA-Operatoren teilweise fehlen oder umständlich umzusetzen sind (sprich hasOwnProperty).

Ja. Wobei ich die Abfrage von hasOwnProperty nicht wirklich als umständlich bezeichnen würde. Für große Datenbestände könnte es übrigens sogar von Vorteil sein, statt Objekte direkt als assoziative Arrays zu (miss-?)brauchen, ein Wrapper-Objekt zu verwenden, das zusätzlich die Objekteigenschaften in einer Liste führt, da for(;;) meines Wissens nach performanter als for...in arbeitet.

  1. Aus Bequemlichkeit bevorzugen viele syntaktische Einfachheit und entscheiden statt dessen die Defaultbelegungen zu umgehen (ähnlich den *viel* häufigeren Spezialvariablen in Perl also $_, $a, $b, $0 ,usw...) oder Sonderzubehandeln (Verzicht auf Object.prototype)

Meiner Meinung nach sollte man es im Sinne von Kapselung und dem ganzen guten Programmier-Stil-Gedöns vermeiden, Obect.prototype zu verwenden. Daher kam auch meine Idee von wegen with({Object : MyObject})... bzw. with(Bibliothek), da es so möglich ist, Eigenschaften zu beliebigen (globalen) Objekten hinzuzufügen, ohne den Namensraum zu 'verschmutzen'.

Ich bevorzuge den Terminus Hash!

Das sei dir durchaus gegönnt (wie gesagt, 'Hash' und 'assoziatives Array' können synonym verwendet werden).

(tatsächlich gibts wohl diverse Implementierungen für AA von denen die mit Hashfunktion nur eine Variante darstellt, aber die Implementierung ist ja Transparent)

Du meinst die Implementierung eines assoziativen Arrays mit Hash_tabellen_ (siehe oben). Alternativen wären z.B. binäre Suchbäume und Skip-Listen.

  1. Weil er kürzer ist.
  2. Weil in JS dann Verwechslungen mit Array() zu nahe liegen.

Ok.

My POV, bitte korrigiert mich.

Bitte schön.

Christoph

0 139

was bewirkt {}

Ric
  • javascript
  1. 0
    Don P
  2. 0
    KurtZ
    1. 0
      Don P
      1. 0
        KurtZ
        1. 0
          Don P
          1. 0
            KurtZ
            1. 0
              Don P
              1. 0
                KurtZ
                1. 0
                  Cheatah
                  1. 0
                    KurtZ
                    1. 0
                      Don P
                      1. 0
                        KurtZ
                        1. 0
                          Siechfred
                    2. 0
                      Cheatah
        2. 0
          Don P
          1. 0
            KurtZ
            1. 0
              Don P
              1. 0
                KurtZ
    2. 0
      Cheatah
      1. 0
        KurtZ
        1. 0
          Siechfred
          1. 0
            KurtZ
            1. 0
              Cheatah
              1. 0
                KurtZ
                1. 1
                  Siechfred
                  1. 0
                    KurtZ
                    1. 0
                      Siechfred
                      1. 0
                        KurtZ
                        1. 0
                          Don P
                      2. 0
                        Siechfred
                      3. 2
                        Daniel Thoma
                        1. 0
                          KurtZ
                        2. 0
                          Siechfred
                          1. 0
                            Daniel Thoma
                            1. 0
                              Struppi
      2. 0

        "Herrje" Cheatah

        KurtZ
        1. 0
          Don P
          1. 0
            KurtZ
            1. 1
              Don P
              1. 0
                KurtZ
                1. 0
                  Don P
                  1. 0
                    KurtZ
        2. 0
          Siechfred
          1. 0
            KurtZ
            1. 0
              KurtZ
              1. 0
                Christoph
                1. 0
                  KurtZ
                  1. 0
                    Christoph
                    1. 0
                      LanX
                      1. 0
                        LanX
                        1. 0
                          Don P
                          1. 0
                            KurtZ
                            1. 0
                              Don P
                      2. 0
                        molily
                        1. 0
                          Christoph
                          1. 0
                            KurtZ
                            1. 0
                              Struppi
                            2. 0
                              Struppi
                            3. 0
                              Christoph
                              1. 0
                                Don P
                              2. 0
                                molily
                                1. 0
                                  molily
                              3. 0

                                "Herrje" Christoph

                                KurtZ
                                1. 0
                                  KurtZ
                                  1. 0
                                    Christoph
                                    1. 0
                                      KurtZ
                                      1. 0
                                        molily
                          2. 0
                            LanX²
                        2. 0
                          LanX²
                          1. 0
                            molily
                            1. 0
                              LanX²
                              1. 0
                                molily
                                1. 0
                                  KurtZ
                                  1. 0
                                    molily
                                    1. 0
                                      KurtZ
                              2. 0
                                KurtZ
                                1. 0
                                  LanX²
                    2. 0
                      molily
                      1. 0
                        LanX
                        1. 0
                          molily
                      2. 0
                        Christoph
            2. 0
              Siechfred
              1. 1

                Lieber SIechfred!

                KurtZ
                1. 0
                  Struppi
                  1. 0
                    Don P
                  2. 0
                    KurtZ
                    1. 0
                      Struppi
                      1. 0
                        KurtZ
                        1. 0
                          Struppi
                          1. 0

                            Lieber Struppi!

                            KurtZ
                          2. 1
                            Christoph
                            1. 0
                              Struppi
                            2. 0

                              Lieber Christof ;)

                              KurtZ
                              1. 0
                                KurtZ
                              2. 1
                                Christoph
                              3. 0

                                Lieber Christo__ph__ ;)

                                Christoph
                                1. 0
                                  KurtZ
                2. 0
                  Siechfred
                  1. 0

                    Lieber Siechfred!

                    KurtZ
                    1. 0
                      molily
                      1. 0
                        KurtZ
                3. 0
                  KurtZ
          2. 0

            Der Hash in Prototype

            Tim Tepaße
        3. 0
          Cheatah
          1. 0
            KurtZ
            1. 0
              Cheatah
      3. 0

        Übrigens, JS hat auch keine Arrays!

        KurtZ
        1. 0
          Don P
        2. 0
          Struppi
          1. 0
            KurtZ
            1. 0
              Struppi
              1. 0
                KurtZ
                1. 0
                  KurtZ
                2. 0
                  Struppi
                  1. 0
                    KurtZ
                    1. 0
                      Struppi
                      1. 0
                        KurtZ
                        1. 0
                          molily
                    2. 1
                      Don P
                      1. 0
                        KurtZ
                      2. 0
                        molily
                  2. 1
                    molily
        3. 2
          molily
        4. 0
          Harlequin
    3. 3
      KurtZ
    4. 0
      Struppi
      1. 0
        KurtZ
        1. 0
          molily
          1. 0
            KurtZ
            1. 0
              Christoph
              1. 0
                KurtZ
                1. 0
                  KurtZ
  3. 0

    Assoziative Arrays - es gibt sie doch!

    Christoph
    1. 0

      leicht modifiziert

      Christoph
      1. 0

        Iteratoren zur Realisierung von »reinen« Hashes nutzen

        Tim Tepaße
        1. 0
          Christoph
          1. 0
            Tim Tepaße
    2. 0
      Struppi