Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-07-2006, 00:49   #1 (permalink)
Achim Math.PI
 
Benutzerbild von bloba
 
Registriert seit: Jul 2001
Ort: cool Colonia
Beiträge: 11.642
Array nach Datum sortieren

Hallo zusammen, ich habe folgendes spezielles problem...


ich erhalte aus einer xml datei einträge die u.a. daten (plural von datum) enthalten, welche sich dann in einem array(hauptarray) wieder finden.
hierhaus filtere ich einige raus (wie und wo für dieses prob unwichtig)wo ich dann am ende 2 array erhalte: nämlich eins mit dem datumwert und eins mit der postion die es im hauptarray hat.

zb :
PHP-Code:
selectDate=["2.3.2003","3.3.2000","8.1.2006"];
selectPos=[2,5,8]; 
wie man sieht ist dort nicht chronlogisch etc...es gibt hier nur den zusammen hang der beiden array mit ihren array positionen
so
wenns keine daten wären liessse sich das leicht lösen indem man immer in das datum eine id pusht un die später mit split, join wieder ausliest - nur bei daten (datums) ist das problem so dass sie sich ned einfach sortieren lassen...

siehe hier


nun bastel ich hier schon ne weile rum un komme auf kein ergebniss wie man die nacher sortieren array wieder mit seiner orignal postion abgleicht....
__________________
gruß bloba

2 x onkel² b_d
bloba ist offline   Mit Zitat antworten
Alt 20-07-2006, 03:04   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
falls ich dich richtig verstanden habe:
Code:
selectDate = ["2.3.2003", "3.3.2000", "8.1.2006"];
selectPos = [2, 5, 8];
//
index = dateSort(selectDate);
for (var i = 0; i<index.length; i++) {
	trace(selectPos[index[i]]+": "+selectDate[index[i]]);
}
//
function dateSort(daten) {
	var index = [];
	for (var i in daten) {
		var t = daten[i].split('.');
		index[i] = Number(new Date(t[2], t[1]-1, t[0]));
	}
	return index.sort(Array.NUMERIC, Array.RETURNINDEXEDARRAY);
}
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 20-07-2006, 05:43   #3 (permalink)
Achim Math.PI
 
Benutzerbild von bloba
 
Registriert seit: Jul 2001
Ort: cool Colonia
Beiträge: 11.642
ne nicht ganz - habe es baer inzwischen selber hinbekommen dennoch danke
PHP-Code:
var daten = ["10.10.2005""5.7.2006""8.5.1995""3.4.2000"];
var 
ref = ["10.10.2005""5.7.2006""8.5.1995""3.4.2000"];
var 
= [1234];
function 
dateSort(daten) {
    for (var 
0i<daten.lengthi++) {
        var 
aTemp daten[i].split('.');
        
daten[i] = new Date(aTemp[2], aTemp[1], aTemp[0]);
    }
    for (var 
daten.lengthi>0i--) {
        for (var 
0j<i-1j++) {
            if (
daten[j].getTime()>daten[j+1].getTime()) {
                
daten[j];
                
daten[j] = daten[j+1];
                
daten[j+1] = h;
            }
        }
    }
    for (var 
0i<daten.lengthi++) {
        
daten[i] = daten[i].getDate()+"."+daten[i].getMonth()+"."+daten[i].getFullYear();
    }
}
trace(daten);
//2 0 1
dateSort(daten);
trace(daten);
//trace(p);
var playlist = [];
for (var 
0j<daten.lengthj++) {
    for (var 
0i<daten.lengthi++) {
        if (
ref[i] == daten[j]) {
            
playlist.push(i);
        }
    }
}
//trace(p);
np = [];
for (var 
0j<daten.lengthj++) {
    
np.push(p[playlist[j]]);
}
//trace(playlist);
trace(np); 
__________________
gruß bloba

2 x onkel² b_d
bloba ist offline   Mit Zitat antworten
Alt 21-07-2006, 13:39   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
stimmt schon, nur die beiwerte bei sort hätte ich nicht mit komma trennen dürfen. und deine routine hat einen bug:
Code:
var daten = ["10.10.2005", "5.7.2006", "8.5.1995", "3.4.2000", "24.12.2007"];
var ref = ["10.10.2005", "5.7.2006", "8.5.1995", "3.4.2000", "24.12.2007"];
var p = [1, 2, 3, 4, 5];
function dateSort(daten) {
	for (var i = 0; i<daten.length; i++) {
		var aTemp = daten[i].split('.');
		daten[i] = new Date(aTemp[2], aTemp[1], aTemp[0]);
	}
	for (var i = daten.length; i>0; i--) {
		for (var j = 0; j<i-1; j++) {
			if (daten[j].getTime()>daten[j+1].getTime()) {
				h = daten[j];
				daten[j] = daten[j+1];
				daten[j+1] = h;
			}
		}
	}
	for (var i = 0; i<daten.length; i++) {
		daten[i] = daten[i].getDate()+"."+daten[i].getMonth()+"."+daten[i].getFullYear();
	}
}
dateSort(daten);
var playlist = [];
for (var j = 0; j<daten.length; j++) {
	for (var i = 0; i<daten.length; i++) {
		if (ref[i] == daten[j]) {
			playlist.push(i);
		}
	}
}
np = [];
for (var j = 0; j<daten.length; j++) {
	np.push(p[playlist[j]]);
}
trace(daten);
trace(np);
trace("-----");
//
//
selectDate = ["10.10.2005", "5.7.2006", "8.5.1995", "3.4.2000", "24.12.2007"];
selectPos = [1, 2, 3, 4, 5];
index = dateSort2(ref);
for (var i = 0; i<index.length; i++) {
	trace(selectPos[index[i]]+": "+selectDate[index[i]]);
}
function dateSort2(daten) {
	var index = [];
	for (var i in daten) {
		var t = daten[i].split('.');
		index[i] = Number(new Date(t[2], t[1]-1, t[0]));
	}
	return index.sort(Array.NUMERIC+Array.RETURNINDEXEDARRAY);
}
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib 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:12 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele