stw: Assoziatives Array mit arbiträrer Adressierung

Hallo,

ich mach es kurz,
es geht um ein assoziatives Array mit arbiträrer Adressierung.
Genauer gesagt, geht es mir um die Ermittlung des Indexes bzw. des Namens eines Eintrages (in JScript).
Bis dato ist mir nur folgende Möglichkeit bekannt.

<example>
var xArray = new Array();
xArray["harry"] = 10;
xArray["udo"]   = 20;

for (key in xArray)
  WScript.Echo(key); //- gibt alle Namen aus
</example>

Mich würde nun interessieren, wie und ob ich die Länge des Arrays sowie die "Index"-Namen ohne Schleife herausbekomme. Ein xArray.length funktioniert hier ja nicht.

Da die Elemente in einem Datenfeld nicht zusammenhängend sein müssen, stellt die length-Eigenschaft nicht unbedingt die Anzahl der Elemente in dem jeweiligen Datenfeld dar. So enthält beispielsweise nach der folgenden Datenfelddefinition mein_datenfeld.length den Wert 7 und nicht den Wert 2:

var mein_Datenfeld = new Array( );
  mein_datenfeld[0] = "Test";
  mein_datenfeld[6] = "weiterer Test";
<

Zudem ich bei einer arbiträren Initialisation 0 als Länge bekomme,
sprich xArray.length ergibt hier 0.
Gibt es da noch Methoden, die ich nicht kenne ?

Wie kann ich also, durch Methoden oder Anderes, herausbekommen
1. Ob mein Array durch arbiträre Zeichenfolgen initialisiert wurde
2. Wenn ja, wieviele Elemente besitzt dann mein Array
3. Wie kann ich noch die Namen der Datenfelder ermitteln
4. Gibt es ein annehmbares Workaround

Wäre nett, wenn ihr damit schon Eure Erfahrung gemacht habt.
Zum Verständnis, ich habe momentan ein doppeltes Array (eines zur Namens- und eines zur Datenspeicherung) und würde gerne davon wegkommen.

gruß + dank
stw

  1. hi stw

    so ähnlich wie man die methoden und eigenschaften
    eines objekts ermitteln kann, so gehts auch hier:

    var Feld=new Array();

    Feld["Elisabeth"]=100;
    Feld["Ilse"]=90;
    Feld["Barbara"]=80;

    k=0;
    for (var Eintrag in Feld)
      {
      k++;alert(Eintrag);
      }

    alert(k)

    Der erste alert liefert immer den Namen des jeweiligen Feldes,
    der zweite die anzahl der einträge.

    vielleicht hilft dir das ein bisschen weiter

    lg Spiff