Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-03-2005, 15:06   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 52
mein erster prototype

Hallo zusammen,

ich probiere gerade meinen ersten Array-Prototype zu schreiben. Der Prototype soll das Array säubern, damit mein ich alle nicht besetzten Postionen entfernen so das das Array danach nur auf den Positionen 0-n ohne Lücken belegt ist. Momentan passiert aber leider gar nichts.

PHP-Code:
= new Array();
a[1] = "value1";
a[4] = "value4";
//
Array.prototype.clean = function() {
    var 
tmpArr = new Array();
    for (var 
i in this) {
        
tmpArr.push(this[i]);
    }
    
tmpArr.reverse();
    return 
tmpArr;
};
a.clean(); 
Kann wer erkennen was ich da falsch mache? Bis jetzt hatte ich das ganze als normale Funktion, und da hat es hervorragen funktioniert.
bboy ist offline   Mit Zitat antworten
Alt 23-03-2005, 15:27   #2 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 52
Vielleicht zum besseren Verständnis hier noch meine ursprüngliche Funktion.

PHP-Code:
= new Array(); 
a[1] = "value1"
a[4] = "value4"

function 
cleanArray(Arr) {
    var 
tmpArr = new Array();
    for (var 
i in Arr) {
        
tmpArr.push(a[i]);
    }
    
tmpArr.reverse();
    return 
tmpArr;
}

cleanArray(a); 
Hier ist mein Array a nach dem funktionsaufruf nur noch an den ersten beiden positionen [0] und [1] belegt. Die gleiche Funktionalität hätte ich aber gerne als Array.prototype

Geändert von bboy (23-03-2005 um 15:28 Uhr)
bboy ist offline   Mit Zitat antworten
Alt 23-03-2005, 15:49   #3 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
EDIT:
Habs nochmal geändert.

PHP-Code:
= new Array(); 
a[1] = "value1"
a[4] = "value4"
 
Array.
prototype.clean = function() { 
    for (var 
0this.lengthi++) 
    { 
        if( 
this] == undefined this.splicei--, ); 
    } 
}; 
a.clean(); 
uuups der warrantmaster war schneller...
__________________
ERROR: Signature is too large

Geändert von rendner[i] (23-03-2005 um 16:04 Uhr)
rendner[i] ist offline   Mit Zitat antworten
Alt 23-03-2005, 15:53   #4 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
PHP-Code:
= new Array();
a[1] = "value1";
a[4] = "value4";
Array.
prototype.clean = function() {
    var 
tmpArr = new Array();
    for (var 
i=0;i<this.length;i++) 
    {
        
this[i]!=undefined tmpArr.push(this[i]) :0;;
    }
    return 
tmpArr;
};
trace(a)
trace(a.clean()); 
warrantmaster ist offline   Mit Zitat antworten
Alt 23-03-2005, 16:17   #5 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
So, und weil's so schön is, gleich noch ne Möglichkeit...
ActionScript:
  1. a = new Array();
  2. a[1] = "value1";
  3. a[4] = "value4";
  4. //
  5. Array.prototype.clean = function () {
  6.     var i = this.length;
  7.     while (i--) {
  8.         if (this[i] == undefined) {
  9.             this.splice (i, 1);
  10.         }
  11.     }
  12.     return this;
  13. };
Hi Freund warrant
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 23-03-2005, 16:19   #6 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
tach freund sonar

btw, hast die schickste lösung! edit->oder doch nicht ? nochmal edit-> doch!
grz

Geändert von warrantmaster (23-03-2005 um 16:22 Uhr)
warrantmaster ist offline   Mit Zitat antworten
Alt 23-03-2005, 16:25   #7 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
@ warrantmaster:
...da wahr ich mal wieder zu voreilich mit den beschuldigungen...habs dann auch gesehen...sonar's Versi fängt ja hinten an ...aber das return könnte man sicher weglassen...
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 23-03-2005, 16:25   #8 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
@warrant: Zumindest die kelor'sche Lösung, hehe...
("...while is des schnellste...")

@rendner: ja, kann man weglassen, aber mit return kannst mit dem neuen Array gleich weiterarbeiten:
ActionScript:
  1. trace (a.clean ());
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)

Geändert von sonar (23-03-2005 um 16:33 Uhr)
sonar ist offline   Mit Zitat antworten
Alt 23-03-2005, 16:49   #9 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 52
Vielen Dank für die gleich mehrfache Lösung meines Problems. Nichts desto trotz versteh ich nicht wieso mein eigener Ansatz nicht funktioniert.
bboy ist offline   Mit Zitat antworten
Alt 23-03-2005, 16:54   #10 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Stimmt...
Aber er funktioniert doch, hat nur n paar Unschönheiten:
1. das tmpArr brauchts nicht
2. du kriegst beim tracen ein [type Function] mit raus (das is die prototype-Methode selber) - lässt sich aber durch die erste Zeile hier im prototype gleich in den Griff kriegen...
ActionScript:
  1. var a = new Array ();
  2. a[1] = "value1";
  3. a[4] = "value4";
  4. //
  5. Array.prototype.clean = function () {
  6.     ASSetPropFlags (Array.prototype, null, 1, 1);
  7.     var tmpArr = new Array ();
  8.     for (var i in this) {
  9.         tmpArr.push (this[i]);
  10.     }
  11.     tmpArr.reverse ();
  12.     return tmpArr;
  13. };
  14. trace (a.clean ());
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)

Geändert von sonar (23-03-2005 um 16:56 Uhr)
sonar ist offline   Mit Zitat antworten
Alt 23-03-2005, 17:15   #11 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 52
Mein prototype hat funktioniert und ich habs gar nicht bemerkt!

Der Unterschied ist aber das ich bei meinem (von sonar verbesserten) prototype a = a.clean() schreiben muss um mein Array zu säubern, bei sonars eigener Lösung aber nur a.clean().
So hatte ich das davor auch immer probiert, und da passiert bei meinem eigenen nichts. Versteh nur nicht wieso, es wird doch bei beiden am ende nur ein Array returned...
bboy ist offline   Mit Zitat antworten
Alt 23-03-2005, 17:23   #12 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Zitat:
Zitat von bboy
Der Unterschied ist aber das ich bei meinem (von sonar verbesserten) prototype a = a.clean() schreiben muss um mein Array zu säubern, bei sonars eigener Lösung aber nur a.clean().
Ja, das liegt eben an dem tmpArr - da wird dein Original-Array nicht überschrieben. Bei meiner Version schon, das is ja eigentlich auch der Sinn des ganzen, oder..?
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 23-03-2005, 17:34   #13 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 52
Ahh, so langsam check ichs. Vielen Dank noch mal.
bboy ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 22:55 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele