Christian Seiler: Prototype: $A array each

Beitrag lesen

Hallo,

Ich definiere einen Array:

var arr = {ein:1,zwei:2,drei:3,vier:4};

Ich wandle diesen in ein Objekt um, damit
ich mit dem Framework "Prototype" arbeiten
kann:

arr = $A(arr);

Das ist schonmal der Fehler. $A (argument) funktioniert nämlich nur in 2 Fällen:

  1. argument besitzt eine Methode toArray, die ein Array zurückgibt. Dein Objekt besitzt keine derartige Methode.

  2. argument besitzt eine Eigenschaft length und erlaubt den Zugriff über argument[i] (was nicht notwendigerweise ein Objekt des Typs Array sein muss). Dann wird ein neues Objekt vom Typ Array erzeugt und alles rüberkopiert.

$A(beliebiges_objekt) funktioniert dagegen nicht - es wird Dir immer eine leere Liste zurückgeben. Ich weiß nicht, ob prototype eine entsprechende Methode für beliebige Objekte anbietet, ansonsten bliebe noch so etwas wie (ungetestet):

zielArray = [];  
for (var key in arr) {  
  /* oder irgendwas ähnliches, keine Ahnung, was genau in Deinem Ziel-  
     Array stehen soll */  
  zielArray.push (arr[key]);  
}

Dann kannst Du mit zielArray anstellen, was Du willst.

Viele Grüße,
Christian

--
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup