Zweidimensionalen Array nach Date sortieren

CleaN

Grünschnabel
Hallo liebe Community,

Ich bin derzeit an einem etwas größerem Projekt tätig und komme an einer Stelle nicht weiter.
Folgendes: Ich habe einen Array mit folgender Struktur:
Code:
[Inhalt1, Datum1]
[Inhalt2, Datum2]
usw.
Das Datum ist wie
Code:
Sat, 20 Oct 2012 20:30:11 +0000
formatert.
Ich will jetzt, dass die Spalte Inhalt bzw. 0 nach den Daten aus Spalte Datum/1 sortiert wird.
Ich habe schon x verschiedene Sachen probiert, allerdings nichts gefunden. Ich hoffe ihr könnt mir weiterhelfen...

Beste Grüße,
CleaN
 
Hallo CleaN,

Wie meinst du das mit "sortieren"? Du hättest gerne den Inhalt des Datums entsprechend?
Habe nur wenige Threads weiter unten eine ähnliche Möglichkeit mit Arrays zu arbeiten aufgezeigt.
http://www.tutorials.de/javascript-ajax/390271-pure-javascript-2-arrays-miteinander-vergleichen.html

Javascript:
Array.prototype.foreach = function( callback ) {
    for( var k=0; k<this .length; k++ ) {
        callback( k, this[ k ] );   
    }
}
 
var Pin= new Array();
Pin[0]='4';
Pin[1]='1,2,4';
Pin[2]='0,1,4';
Pin[3]='1,3';
 
Pin.foreach( function( k, v ) {
    if (v.match('2') || v.match('3')) {
        document.writeln( k + ' ' + v );
    }
});

Teste das mal dann siehst du was passiert und kannst es sicher richtig nutzen.
Gruß Joe.
 
Hallo,

du kannst DATE-Objekte genau so sortieren, wie das in SelfHTML mit numerischen Größen gezeigt wird. Du musst in der Hilfsfunktion "numSort" lediglich die zu sortierende Arrayspalte deines mehrdimensionalen Arrays verwenden.

Beispiel:
HTML:
<html>
  <head><title>Test: dateSort</title></head>
  <body>
    <script type="text/javascript">
      var item = new Array();
      item[0] = new Array("inhalt0", new Date(2012,9,20,20,30,11));
      item[1] = new Array("inhalt1", new Date(1958,1,25,8,43,0));
      item[2] = new Array("inhalt2", new Date(1765,5,12,9,0,0));
      item[3] = new Array("inhalt3", new Date(1958,1,25,8,42,54));

      /* Position der zu sortierenden Arrayspalte (bei Null beginnend): */
      var sPos = 1;

      function numSort (a, b) {
        return a[sPos] - b[sPos];
      }
      item.sort(numSort);

      /* Sortiertes Array ausgeben: */
      document.write(item.join("<br>"));
    </script>
  </body>
</html>
Ausgabe im Browser:
Code:
inhalt2,Wed Jun 12 1765 09:00:00 GMT+0200
inhalt3,Tue Feb 25 1958 08:42:54 GMT+0100
inhalt1,Tue Feb 25 1958 08:43:00 GMT+0100
inhalt0,Sat Oct 20 2012 20:30:11 GMT+0200
 
Hallo,

@Joe: Vielen Dank für deine Bemühungen, doch leider hilft mir das nicht weiter...
@hela: Mit einem ähnlichen Code habe ich das schon öfter probiert, doch beim Vergleich mit deinem sind mir einige Fehler meinerseits aufgefallen. Jetzt läufts :D

Vielen Dank,

CleaN
 

Neue Beiträge

Zurück