Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-02-2005, 16:18   #1 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Array sortieren für Fortgeschrittene...

Hallo ertmal!

Ich habe da ein Problem. Ich weiß genau, dass das was ich möchte geht, stehe aber auf dem Schlauch bzw. kenne mich mit Arrays und deren Verhalten nicht gut genug aus. Also, ich habe ein Array das sieht so aus:

011204_club1,34,041204_club2,10,051104_club3,11,06 1104_club4,8,061104_club5,20,061104_club6,20 ...und so weiter.

Die ersten 6 Ziffern sind das Datum und danach soll sortiert werden. Allerdings soll die alleinstehende Zahl nach dem Komma "mitgenommen" werden. Also so z.B.:

vorher: 011204_club1,34,041204_club2,10
nachher: 041204_club2,10,011204_club1,34

Dus muss doch irgendwie mit return und sort gehen?
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 20-02-2005, 16:24   #2 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Hallo Frager,

ich würde das Array erstmal umwandeln in ein Array aus Objekten und das dann sortieren. Anschliessend kannst du es wieder zurückwandeln. Das Sortieren der Daten würde so eh nicht funktionieren, es sei denn, du möchtest, dass der 1. Oktober vor dem 1. Juni erscheint.

ActionScript:
  1. Array umwandeln
  2. Umgewandeltes Array nach Datum sortieren
  3. Sortiertes Array zurück wandeln

mfg. r.
bokel ist offline   Mit Zitat antworten
Alt 20-02-2005, 16:30   #3 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hi bokel!

Naja, ich dachte mir das so: erstmal nach den letzten 2 Ziffern (also 04 oder 05) sortieren, dann nach den mittleren (01-12 / Monat) und dann nochmal nach den ersten beiden (Tag). Müsste doch gehen?
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 20-02-2005, 16:39   #4 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Ja, das ginge auch. Aber wenn du schon dabei bist, die Daten zu splitten, kannst du sie auch gleich in einem Objekt speichern. Das wäre sowieso eine gute Idee.
Das Datum kannst du besser in einem Date-Objekt speichern, und die Bezeichnung und die Zahl steckst du noch mit in das Objekt. Diese Objekte kannst du dann einfach sortieren.

ActionScript:
  1. var obj = new Object();
  2. obj.date = new Date(....);
  3. obj.name = name des clubs;
  4. obj.nummer = nummer hinter dem eigentlichen Eintrag

mfg. r.
bokel ist offline   Mit Zitat antworten
Alt 20-02-2005, 16:42   #5 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Dann teste ich das mal so... Mal gucken, ob's wohl hinhaut.

Danke erstmal.
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 21-02-2005, 18:38   #6 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
War ja klar. Komme nicht weiter...

Hallo nochmal!

Habe jetzt mein ursprüngliches Array gesplittet und all so ein Mist und ein neues erstellt. Verstehe das alles aber immernoch nicht ganz

Also nicht lachen:
PHP-Code:
var 0;
verz = [];
for (var 
0x<verzeichnis.lengthx+=2) {
    
verz[i] = [];
    var 
tag verzeichnis[x].substring(02);
    var 
monat verzeichnis[x].substring(24);
    var 
jahr "20"+verzeichnis[x].substring(46);
    
verz[i][0] = "datum:"+new Date(jahrmonat-1tag);
    
verz[i][1] = "ort:"+verzeichnis[x].slice(7verzeichnis[x].length);
    
verz[i][2] = "anzahl:"+verzeichnis[x+1];
    
i++;
}
trace(verz); 
Jetzt würde ich ganz gerne z.B. nach "ort" sortieren. Aber verz.sortOn("ort"); geht auf jeden Fall nicht...
Was muss ich da denn anders machen? Lasst euch Zeit ich muss jetzt weg...

MfG
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 21-02-2005, 18:45   #7 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Da sieht schon gut aus, nur anstatt 0,1,2 kannst du direkt datum, ort und anzahl benutzen.

ActionScript:
  1. var i = 0;
  2. verz = [];
  3. for (var x = 0; x<verzeichnis.length; x+=2) {
  4.     verz[i] = new Object();
  5.     var tag = verzeichnis[x].substring(0, 2);
  6.     var monat = verzeichnis[x].substring(2, 4);
  7.     var jahr = "20"+verzeichnis[x].substring(4, 6);
  8.     verz[i].datum = new Date(jahr, monat-1, tag);
  9.     verz[i].ort = verzeichnis[x].slice(7, verzeichnis[x].length);
  10.     verz[i].anzahl = verzeichnis[x+1];
  11.     i++;
  12. }
  13. trace(verz);

So sollte das mit sortOn funktionieren.

mfg. r.
bokel ist offline   Mit Zitat antworten
Alt 23-02-2005, 11:40   #8 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Och nöööö...

Servus!

Danke für die Antworten, aber das ist's immernoch nicht. Es werden zwar die Objekte erstellt, aber nix reingeschrieben. Sprich, die trace-Ausgabe sieht so aus:

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]...

Hülfe!
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 23-02-2005, 12:13   #9 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Wenn du ein Objekt mit trace ausgeben willst, ist das normal.
Es sei denn, dein Objekt hat eine Funktion namens toString.
Die Funktion toString wird automatisch aufgerufen, wenn ein Objekt als String gebraucht wird (z.B. bei trace) und sollte dann einen String liefern, der das Objekt repräsentiert. Im Prinzip kannst du aber allles mögliche ausgeben:

ActionScript:
  1. meinObjekt = new Object();
  2. meinObjekt.name = "Ralf";
  3. meinObjekt.groesse = "186";
  4.  
  5. // hier nochmal ohne toString
  6. trace( meinObjekt);// ausgabe "[object Object]"
  7.  
  8. // so könnte toString aussehen
  9. // die Eigenschaften des Objekts werden mit this.eigenschaft angesprochen
  10. meinObjekt.toString = function(){
  11.       return this.name + " ist " + this.groesse + " cm gross.";
  12. }
  13.  
  14. // jetzt mit toString sieht die Ausgabe anders aus:
  15. trace(meinObjekt);// ausgabe "Ralf ist 186 cm gross."
  16.  

mfg. r.

Geändert von bokel (23-02-2005 um 12:17 Uhr)
bokel ist offline   Mit Zitat antworten
Alt 23-02-2005, 14:01   #10 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Ah! Danke!!! Das muss man erstmal wissen.
Dann werde ich jetzt mal gucken, ob die Geschichte mit der Sortierung klappt und wie ich das dann in mein Programm reingefrickelt kriege. Aber ich denke, das passt schon.

PS: Freu
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 23-02-2005, 15:22   #11 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Zitat:
Zitat von Der Frager

PS: Freu
...und auch schon wieder vorbei mit der Freude! Ich kriege das Ding nicht sortiert. Alles ander klappt (aber das hat's ja mit dem ursprünglichen Array auch).

Kann mir bitte mal einer sagen, wie das sortOn() aussehen muss um z.B. nach dem jetzt wunderbar als date abgelegem Datum zu sortieren?

Ich kriege noch 'ne Kriese. Dachte das wäre ein ganz simples Ding...

edit: So, mittlerweile bin ich soweit, dass ich z.B. nach "ort" sortieren kann. Aber immernoch nicht nach datum...
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++

Geändert von Der Frager (23-02-2005 um 16:17 Uhr)
Der Frager ist offline   Mit Zitat antworten
Alt 23-02-2005, 16:27   #12 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Ok hat sich erledigt. Habe jetzt mal das Gehirn kurz eingeschaltet und dann das script wir folgt geändert:

PHP-Code:
verz[i].datum = (jahr+monat+tag); 
Jetzt geht das natürlich.

So... Gehirn wieder abgeschaltet und jetzt geht's weiter!
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager 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:51 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele