domidragon
Fleet Admiral
- Registriert
- Juli 2008
- Beiträge
- 11.532
Huhu
Ich erhalte von der sort() Funktion eine falsche Sortierung und ich sehe den Fehler nicht, wieso diese die Werte so sortiert. Es macht schlicht kein Sinn. Vielleicht seht ihr ja was, was ich nicht sehe. Danke.
Ich habe es in verschiedenen Varianten getestet. Ich will einen String, der davor ein TimeStamp hat, zeitlich sortieren. (Ich kann diese Daten leider nicht anders bekommen.)
Der String sieht ungefähr wie folgt aus (es handelt sich um Logeinträge)
23.12.2014 / 16:44:08 _Test_This is a test error message
(Datum / Zeit _Modul_Message)
Ich extrahiere aus dem String das Datum und die Zeit. (Format ist immer gleich, daher leicht machbar)
Dann habe ich ein Array voll mit Date Objekten (https://docs.oracle.com/javase/6/docs/api/java/util/Date.html). Dieses Objekt bietet z.B. die Möglichkeit mit .getTime() das Datum/Zeit in Millisekunden zu bekommen.
Nun folgendes Problem. Wenn ich in einen Array nur die Millisekunden aller TimeStamps schreibe und dieses per .sort() sortieren lasse:
ist das Array danach sauber abwärts sortiert wie ich es will.
Nun wird aber die Zuweisung der Message schwierig, daher habe ich mir gedacht, ich erweitere die Funktion.
Befülle das Array mit einem Objekt, welches beide Werte kennt.
Wenn ich nun wieder sortieren will:
Bekomme ich eine willkürliche Sortierung, die keinen sinn macht. Hier die Ausgabe:
Habe ich irgendwo einen Denkfehler? Das müsste doch so funktionieren?
Habt ihr evtl. einfachere Lösungen?
Grüsse
Domi
Ich erhalte von der sort() Funktion eine falsche Sortierung und ich sehe den Fehler nicht, wieso diese die Werte so sortiert. Es macht schlicht kein Sinn. Vielleicht seht ihr ja was, was ich nicht sehe. Danke.
Ich habe es in verschiedenen Varianten getestet. Ich will einen String, der davor ein TimeStamp hat, zeitlich sortieren. (Ich kann diese Daten leider nicht anders bekommen.)
Der String sieht ungefähr wie folgt aus (es handelt sich um Logeinträge)
23.12.2014 / 16:44:08 _Test_This is a test error message
(Datum / Zeit _Modul_Message)
Ich extrahiere aus dem String das Datum und die Zeit. (Format ist immer gleich, daher leicht machbar)
Dann habe ich ein Array voll mit Date Objekten (https://docs.oracle.com/javase/6/docs/api/java/util/Date.html). Dieses Objekt bietet z.B. die Möglichkeit mit .getTime() das Datum/Zeit in Millisekunden zu bekommen.
Code:
dataArray[0].getTime()
1419349446000
Nun folgendes Problem. Wenn ich in einen Array nur die Millisekunden aller TimeStamps schreibe und dieses per .sort() sortieren lasse:
Code:
msArray.sort(function (a, b) { a - b});
ist das Array danach sauber abwärts sortiert wie ich es will.
Nun wird aber die Zuweisung der Message schwierig, daher habe ich mir gedacht, ich erweitere die Funktion.
Code:
dataArray.push({
date: dateObj,
originalMsg: messageString,
});
Wenn ich nun wieder sortieren will:
Code:
dataArray.sort(function (a, b) { a.date.getTime() - b.date.getTime() });
Bekomme ich eine willkürliche Sortierung, die keinen sinn macht. Hier die Ausgabe:
Code:
% dataArray[0].date.getTime()
1419349446000
% dataArray[1].date.getTime()
1419349448000
% dataArray[2].date.getTime()
1419349453000
% dataArray[3].date.getTime()
1419349442000
% dataArray[4].date.getTime()
1419349447000
% dataArray[5].date.getTime()
1419349452000
% dataArray[6].date.getTime()
1419349447000
% dataArray[7].date.getTime()
1419349448000
% dataArray[8].date.getTime()
1419349445000
Habe ich irgendwo einen Denkfehler? Das müsste doch so funktionieren?
Habt ihr evtl. einfachere Lösungen?
Grüsse
Domi
Zuletzt bearbeitet: