Sebastian: Größe eines Javascript Objektes per object.length?

Hi,
ich versuche an die Länge/Größe eines Javascript Objektes zu kommen:

<script type="text/javascript">

var prices = {
  1: 99.00,
  2: 199.00
 }
 alert(prices.length);

</script>

Allerdings bekomme ich nur undefined zurück (count und size funktionieren auch nicht). Bei Arrays funktioniert das gut. Was kann man machen um an die Länge eines Javascript Objektes zu kommen?

Grüße aus FFM

Sebastian

  1. Hi,

    ich versuche an die Länge/Größe eines Javascript Objektes zu kommen:

    was darf denn alles in den Wert mit einfließen? Nur nummerische Eigenschaften, alle Eigenschaften, auch Methoden, inklusive prototypischer?

    Allerdings bekomme ich nur undefined zurück (count und size funktionieren auch nicht). Bei Arrays funktioniert das gut.

    Es ist aber beschränkt auf diejenigen Werte, die (z.B.) über die push()-Methode hinzugefügt wurden. Diese Methode selbst taucht nicht in der Zählung auf, ebenso wenig eine per "meinArray.eigenschaft=wert" hinzugefügte Eigenschaft.

    Was kann man machen um an die Länge eines Javascript Objektes zu kommen?

    Dem Prototypen des Object-Objektes eine Methode hinzufügen, die Deine private Definition von "Länge" kennt und eine entsprechende Zählung hinzufügt. In einigen Browsern reicht auch eine Eigenschaft, deren Getter entsprechend arbeitet.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi Cheatah,

      ich versuche an die Länge/Größe eines Javascript Objektes zu kommen:
      was darf denn alles in den Wert mit einfließen? Nur nummerische Eigenschaften, alle Eigenschaften, auch Methoden, inklusive prototypischer?

      Alle hinzugefügten Eigenschaften, keine Methoden, nichts prototypisches.

      Was kann man machen um an die Länge eines Javascript Objektes zu kommen?

      Dem Prototypen des Object-Objektes eine Methode hinzufügen, die Deine private Definition von "Länge" kennt und eine entsprechende Zählung hinzufügt. In einigen Browsern reicht auch eine Eigenschaft, deren Getter entsprechend arbeitet.

      Danke, gute Idee, aber erstmal zu aufwendig. Trotzdem danke für deine Ausführungen. Mir ist jetzt klar warum Objekte keine length Eigenschaft haben.

  2. Hallo,

    Was kann man machen um an die Länge eines Javascript Objektes zu kommen?

    Seine Member mit for .. in iterieren und einen Zähler mitlaufen lassen.
    Anders gehts nicht.
    Objects sind keine Listen in dem Sinne, dass die Anzahl der Member relevant ist. Wenn du das willst, willst du kein Object, sondern einen Array.
    Ein Object ist von einem Array dahingehend verschieden, dass es sich um eine Bezeichner-Wert-Zuordnung handelt. Wenn deine Bezeichner ohnehin nur 1, 2, 3 usw. sind, dann bist du auf dem falschen Dampfer.

    Mathias

    1. Hi Mathias,

      danke für deine Antwort!

      Was kann man machen um an die Länge eines Javascript Objektes zu kommen?

      Seine Member mit for .. in iterieren und einen Zähler mitlaufen lassen.
      Anders gehts nicht.

      Und so wirds wohl gemacht werden.

      Ein Object ist von einem Array dahingehend verschieden, dass es sich um eine Bezeichner-Wert-Zuordnung handelt. Wenn deine Bezeichner ohnehin nur 1, 2, 3 usw. sind, dann bist du auf dem falschen Dampfer.

      Nee, leider nicht. Sind komplexere Strukturen. Das Beispiel war nur einfach gehalten. Aber mit nem Zähler wirds wohl klappen.