thomaskekeisen.de

Aus dem Leben eines Bildschirmarbyters

Ausgangssituation

Bei der Entwicklung meines Blogs habe ich viel zu viel Zeit durch das Sortieren meiner Blog-Einträge verloren. Da ich meine Seite statisch mit gulp erzeuge, muss ich die JSON-Datei per Javascript parsen und dann mit moment.js und Lodash sortieren. Hier mein Versuchsaufbau: Ein Array, das nochmal pro Blog-Eintrag ein Objekt mit Datums- und Titel-Eigenschaft enthält.

        
            var blogPosts = [{
                date:  "2016-10-26 13:37:00",
                title: "Blog-Post 3"
            }, {
                date:  "2016-10-24 13:37:00",
                title: "Blog-Post 1"
            }, {
                date:  "2016-10-25 13:37:00",
                title: "Blog-Post 2"
            }];
        
    

Javascript-Code

Ich möchte meine Sortierung so, dass der neueste Blog-Eintrag an erster Stelle erscheint. Darum sortiere ich das Array absteigend nach dem Datum. Wichtig: _.sortBy() sortiert das Array immer aufsteigend , darum drehe ich das ganze Array nach dem Sortieren einfach mit einem .reverse() um.

        
            blogPosts = _.sortBy(blogPosts, function(o) {
                return new moment(o.date);
            }).reverse();
        
    

Datums-Objekt vermeiden?

Wer nicht darauf vertraut, dass das Datum- bzw. moment.js-Objekt auch korrekt als solches behandelt wird, kann die .format() -Methode von moment.js verwenden und das Datum einfach zu einer definitiv sortierbaren Zahl umwandeln.

        
            blogPosts = _.sortBy(blogPosts, function(o) {
                return new moment(o.date).format('YYYYMMDD');
            }).reverse();
        
    

Teilen

Kommentare