Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24-04-2005, 22:50   #1 (permalink)
Flash-Bang
 
Registriert seit: Jan 2004
Beiträge: 210
array ordnen

ich möchte einen array neu sortieren und zwar so, dass alle leeren felder im array rausgelöscht werden:
array = [bla, bla2, bla3, , , bla7]
array.ordnen();
array = [bla, bla2, bla3, bla7]

gibt es da ne funktion?
__________________
->pixjumper flashgame (unten in der quicklinkleiste)
sauerkraut ist offline   Mit Zitat antworten
Alt 24-04-2005, 23:05   #2 (permalink)
~~~~~~~~~~~~
 
Benutzerbild von _geo_
 
Registriert seit: May 2002
Ort: AUSTRIA (OÖ)
Beiträge: 3.298
ActionScript:
  1. Array.prototype.ordnen = function(){
  2.     for(var i=0; i < this.length; i++){
  3.         if(this[i]== "" or this[i]== undefined or this[i]== null){
  4.             this.splice(i--,1);
  5.         }
  6.     }
  7. }
  8.  
  9. ray = ["bla","bla2","bla3",null,"",undefined,"bla7"];
  10. ray[17]="ha";
  11. ray.ordnen();
  12. trace(ray);

<edit habs umgeändert damit es jetzt funtkioniert thx @ sal edit>
__________________
--- :P ---

Blog
Bei unerwünschten Nebenwirkungen zerreißen Sie die Packungsbeilage oder erschlagen ihren Arzt oder Apotheker

Geändert von _geo_ (24-04-2005 um 23:45 Uhr)
_geo_ ist offline   Mit Zitat antworten
Alt 24-04-2005, 23:17   #3 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
@_geo_: sehr schöne variante.... hatte grad auch was gescripted und kommentiert, aber jetzt biste mir zuvor gekommen mit deinem post und das auch noch mit einer schöneren lösung! poste trotzdem mal meinen code.... sonst wärja doof

PHP-Code:
//test array bauen
myarr = new Array();
myarr[1] = "eintrag1";
myarr[4] = "eintrag4";
myarr[9] = "eintrag9";

//test array anzeigen
trace(myarr);
trace("\n");

////////////////////////////////////////////////////////////////
//array clean prototype
Array.prototype.cleanmyarr = function() {
    for (var 
0this.lengthi++) {
        if( 
this] == undefined this.splicei--, );
    }
};
//---
////////////////////////////////////////////////////////////////

//prototype wird aufgerufen
myarr.cleanmyarr(); 

//test array anzeigen
trace(myarr); 
cya, sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 24-04-2005, 23:33   #4 (permalink)
Flash-Bang
 
Registriert seit: Jan 2004
Beiträge: 210
thx
__________________
->pixjumper flashgame (unten in der quicklinkleiste)
sauerkraut ist offline   Mit Zitat antworten
Alt 24-04-2005, 23:39   #5 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
Talking

@_geo_: hab deins grad mal getestet.... funktioniert nicht gaanz so gut wie meins
schau mal.... und mach das mal mit deinem prototype....

PHP-Code:
//test arrays bauen
myarr = new Array();
myarr[1] = "eintrag1";
myarr[4] = "eintrag4";
myarr[9] = "eintrag9";

ray = ["bla","bla2","bla3",null,"",undefined,"bla7"];

//test array anzeigen
trace("myarr: "+myarr);
trace("ray: "+ray);
trace("\n");

////////////////////////////////////////////////////////////////
//array clean prototype.... hier auch mal mit _geo_`s testen... 
Array.prototype.cleanmyarr = function() {
    for (var 
0this.lengthi++) {
        if(
this[i] == undefined or this[i] == null or this[i] == ""this.splice(i--, 1);
    }
};
//---
////////////////////////////////////////////////////////////////

//prototype wird aufgerufen
myarr.cleanmyarr(); 
ray.cleanmyarr(); 

//test array anzeigen
trace("myarr: "+myarr);
trace("ray: "+ray); 
cya, sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 24-04-2005, 23:42   #6 (permalink)
~~~~~~~~~~~~
 
Benutzerbild von _geo_
 
Registriert seit: May 2002
Ort: AUSTRIA (OÖ)
Beiträge: 3.298
hehe, rate mal was ich gerade austeste

einfach bei deiner if noch or this[i] == "" dazu und deines ist perfekt

auch ja meines funtioniert mit deinem array nicht weil bei de for i in schleife i nicht indixiert wird wenn i undefined ist ! daher kann man for i in hierfür nicht verwenden

mfg geo ( der das natürlich wieder mal nicht gewusst hat und ne super oop lösung hinschmettern wollte )

hier die Veranschaulichung per AS
ActionScript:
  1. Array.prototype.ordnen = function(){
  2.         for(i in this){
  3.             trace("name: " +i+ "    value: "+ this[i]+"|");
  4.                 if(this[i]== "" or this[i]== undefined or this[i]== null){
  5.                         this.splice(i,1);
  6.                 }
  7.         }
  8. }
  9.  
  10. ray = new Array();
  11. ray[1] = "eintrag1";
  12. ray[4] = "eintrag4";
  13. ray[9] = "eintrag9";
  14. ray.ordnen();
  15. trace(ray);
__________________
--- :P ---

Blog
Bei unerwünschten Nebenwirkungen zerreißen Sie die Packungsbeilage oder erschlagen ihren Arzt oder Apotheker

Geändert von _geo_ (24-04-2005 um 23:47 Uhr)
_geo_ ist offline   Mit Zitat antworten
Alt 24-04-2005, 23:45   #7 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
Talking

Zitat:
Zitat von _geo_
einfach bei deiner if noch or this[i] == "" dazu und deines ist perfekt
ist doch drinn...
ja schade mit dem for i in... dann wär deins eleganter

gruß, sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 24-04-2005, 23:48   #8 (permalink)
~~~~~~~~~~~~
 
Benutzerbild von _geo_
 
Registriert seit: May 2002
Ort: AUSTRIA (OÖ)
Beiträge: 3.298
jop aber wenns nicht funzt is es egal wie elegant, es ist trotzdem schei**e

so und jetzt auf Teufel komm raus eine Variante mit for i in ;-)

ActionScript:
  1. Array.prototype.ordnen = function(){
  2.     var tempary = new Array();
  3.  
  4.     for(i in this){
  5.         if(this[i]!="" and this[i]!=undefined and typeof(this[i])!= "function"){
  6.             tempary.push(this[i]);
  7.             }
  8.         }
  9.  
  10.     tempary.reverse();
  11.     this.splice(tempary.length);
  12.     for(var i=0; i<tempary.length;i++){
  13.         this[i] = tempary[i];
  14.     }
  15. }
  16.  
  17. ray = ["bla","bla2","bla3",null,"",undefined,"bla7"];
  18. ray["ha"] = "nice";
  19. ray[17] = "lol";
  20.  
  21. ray.ordnen();
  22.  
  23. trace(ray);

und die funktion braucht sogar nur 1 zeile ;-)

ActionScript:
  1. Array.prototype.ordnen=function(){var tempary=[];for(i in this)(this[i]!="" and this[i]!=undefined and typeof(this[i])!="function")?tempary.push(this[i]):null;tempary.reverse();this.splice(tempary.length);for(var i=0;i<tempary.length;i++)this[i]=tempary[i];}

und ich geh jetzt schlafen

n8
__________________
--- :P ---

Blog
Bei unerwünschten Nebenwirkungen zerreißen Sie die Packungsbeilage oder erschlagen ihren Arzt oder Apotheker

Geändert von _geo_ (25-04-2005 um 00:38 Uhr)
_geo_ ist offline   Mit Zitat antworten
Alt 25-04-2005, 16:36   #9 (permalink)
poke
 
Registriert seit: Dec 2002
Ort: Iserlohn [NRW]
Beiträge: 2.304
hat es einen besonderen grund, dass ihr nicht die flash interne funktion benutzt??

Array.sort()
pokepika ist offline   Mit Zitat antworten
Alt 25-04-2005, 21:12   #10 (permalink)
~~~~~~~~~~~~
 
Benutzerbild von _geo_
 
Registriert seit: May 2002
Ort: AUSTRIA (OÖ)
Beiträge: 3.298
weil mit sort() die Einträge nicht gelöscht werden ;-)
__________________
--- :P ---

Blog
Bei unerwünschten Nebenwirkungen zerreißen Sie die Packungsbeilage oder erschlagen ihren Arzt oder Apotheker
_geo_ ist offline   Mit Zitat antworten
Alt 25-04-2005, 21:25   #11 (permalink)
poke
 
Registriert seit: Dec 2002
Ort: Iserlohn [NRW]
Beiträge: 2.304
achso thread komplett lesen hilft wohl wirklich
pokepika ist offline   Mit Zitat antworten
Alt 25-04-2005, 21:48   #12 (permalink)
~~~~~~~~~~~~
 
Benutzerbild von _geo_
 
Registriert seit: May 2002
Ort: AUSTRIA (OÖ)
Beiträge: 3.298
Aber zugegeben, der Name "ordnen" für die Funktion ist in dem Zusammenhang etwas verwirrend
__________________
--- :P ---

Blog
Bei unerwünschten Nebenwirkungen zerreißen Sie die Packungsbeilage oder erschlagen ihren Arzt oder Apotheker
_geo_ ist offline   Mit Zitat antworten
Alt 25-04-2005, 21:55   #13 (permalink)
~~~~~~~~~~~~
 
Benutzerbild von _geo_
 
Registriert seit: May 2002
Ort: AUSTRIA (OÖ)
Beiträge: 3.298
Sieg in der Nachspielzeit durch glückliches getTimer() KO (siehe sonar)

ActionScript:
  1. //
  2. // ************** SONAR **************
  3. //
  4. Array.prototype.clean = function () {
  5.         var i = this.length;
  6.         while (i--) {
  7.                 if (!this[i]) {
  8.                         this.splice (i, 1);
  9.                 }
  10.         }
  11.         return this;
  12. };
  13. then1 = getTimer();
  14. trace(then1)
  15. var a = new Array (1000);
  16. trace (a.clean ());
  17. now1 = getTimer () - then1;
  18. trace(getTimer());
  19. trace ("sonar: " + now1 + " ms");
  20. //
  21. // ************** GEO ****************
  22. //
  23. Array.prototype.ordnen = function(){
  24.         var tempary = new Array();
  25.        
  26.         for(i in this){
  27.                 if(this[i]!="" and this[i]!=undefined and typeof(this[i])!= "function"){
  28.                         tempary.push(this[i]);
  29.                 }
  30.         }
  31.         return tempary.reverse();
  32. }
  33. then2 = getTimer();
  34. trace(then2);
  35. a = new Array (1000);
  36. trace (a =a.ordnen ());
  37. now2 = getTimer() - then2;
  38. trace(getTimer());
  39. trace ("geo: " + now2 + " ms");
__________________
--- :P ---

Blog
Bei unerwünschten Nebenwirkungen zerreißen Sie die Packungsbeilage oder erschlagen ihren Arzt oder Apotheker

Geändert von _geo_ (25-04-2005 um 22:17 Uhr)
_geo_ ist offline   Mit Zitat antworten
Alt 25-04-2005, 21:58   #14 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
Thumbs up

geil!
ja servus ihr beiden.
jetzt treibt ihrs aber auf die spitze
aber wo ist jetzt sonar´s post hin? oder war etwa nen fehler drinn?!

meine auch. diesen thread hier sollte man mal anders nennen... könnte noch für andere interessant sein und die finden dann nüscht...

gruß, sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 25-04-2005, 21:58   #15 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Oh oh, ich meld mich sofort vom FF ab, lerne den Umgang mit getTimer () und dann komm ich wieder...

Sorry for Schlaubi *schäm*

Aber trotzdem Grüße an geo & sal!

[edith]
ach, ihr habts garnicht gemerkt oder wie...? *pfeif.wegschlender*
__________________
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 (25-04-2005 um 22:00 Uhr)
sonar 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 11:22 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele