Tutorials

Einige nützliche Hilfen und Code-Schnipsel, die ich immer wieder benötige und deshalb hier für alle sammle.

Zurück zur Übersicht

Javascript: Datum-Arrays nach Zeitspanne gruppieren

#Tutorials#Javascript

Für ein kleines Projekt, bei dem ich Unix-Timestamps nach Zeiteinheiten wie, pro Tag, pro Monat usw. gruppieren wollte, habe ich mir mit moment.js und _Underscore.js ein paar kleine Funktionen geschrieben, die mir die Daten nach jeder beliebigen Zeiteinheit gruppieren können.

// Zeitraum, welcher Moment-kompatibel sein muss. (http://momentjs.com/docs/#/manipulating/start-of/)
  var unit = 'day'; 
  var occurrenceTime = function(occurrence){
    return moment(occurrence,'x').startOf(unit).valueOf();
  };

  var groupToTime = function(group, time){
    return [
      Number(time),group.length
    ]
  };

  var groupData = function(data, unit){
    var result = _.chain(data)
    .groupBy(occurrenceTime)
    .map(groupToTime)
    .value();
    return result;
  }
Anwendung wie folgt:
// data ist ein Array von timestamps [1476861504,1476861514,1476861534,1476861554]
var grouped = groupData(data)
Macht sowas:

grouped = Array[2]
    0:Array[2]
      0:1477461600000
      1:4
    0:Array[2]
      0:1477465200000
      1:2

// es wird ein Array zurückgegeben, welches nach der bestimmten Zeiteinheit gruppiert ist. 
// Dabei werden die Einheiten zusammengezählt. Das erste Ergebnis bedeutet also, dass es 4 Timestamps in dem Zeitraum gab, beim 2. waren es 2.

Das Ganze ist in diesem Format beispielsweise Google Chart kompatibel, und man kann so Balken oder Linien-Diagramme anzeigen


Kommentare

Es gibt noch keine Kommentare. Sei der Erste!

Hinterlasse einen Kommentar

Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Kommentar wird gespeichert
Danke für deinen Kommentar! Sobald er freigegeben wurde erscheint er hier.