Split from_date und to_date zu einer Liste von Datumsbereichsarray

Wie kann ich aus diesem Array umwandeln?

[ { "date_from": "2017-05-06 00:00:00", "date_to": "2017-05-08 23:59:59", "event": "code jam" }, { "date_from": "2017-05-03 00:00:00", "date_to": "2017-05-07 23:59:59", "event": "boxing day" } ] 

Dazu

  • Überprüfen Sie, ob ein JavaScript-Objekt Map oder Set ist (ECMAScript 2015) [Duplizieren]
  • Null-sicherer Eigenschaftszugang (und bedingte Zuordnung) in ES6 / 2015
  • Schalte die Ausführung für ES6 Template Literals ab
  • ECMAScript 6-Funktionen verfügbar in Node.js 0.12
  • Standard-Parameter in ES6 wirft Fehler
  • Warum kann ich den Wert einer Konstante in Javascript ändern
  •  [ .. .. {date: '2017-05-06', state:{name:'San francisco'}}, {date: '2017-05-07', state:{name:'San francisco'}}, {date: '2017-05-08', state:{name:'San francisco'}}, .. .. ] 

    Ich habe keine Ahnung, wo ich anfangen soll. Ich bekomme eine API, wo ich kann es nicht ändern Struktur, ich brauche die Daten in einer Liste der Datumsbereich, so kann ich mit einem Kalender-Plugin Karte. Brauche Hilfe.

  • Benutzerdefinierter Array-ähnlicher Getter in JavaScript
  • Wie kann ich das Optionsargument mit allen Standardwerten in ES6 zerstören?
  • Babeljs vervollständigt nicht erweiterte Klassen richtig [duplizieren]
  • Unterschied zwischen ES6-Objektmethode Zuordnung: a, 'a' und ['a']?
  • Offizielle Informationen zu "Argumenten" in ES6 Arrow Funktionen?
  • Unordentliche Klassennamen Bau
  • 3 Solutions collect form web for “Split from_date und to_date zu einer Liste von Datumsbereichsarray”

    Zuerst Iteration über die Ereignisse, dann Schleife über die Termine Termine und speichern die Ereignisse zu diesem Zeitpunkt:

     var output=input.reduce(function(obj,event){ for(var day=Math.floor(+new Date(event.date_from)/(1000*60*60*24)+1),max=Math.floor(+new Date(event.date_to)/(1000*60*60*24));day<=max;day++){ (obj[day]=obj[day]||[]).push(event); } return obj; },{}); 

    Dann erstellen Sie ein Array aus diesem Objekt (und verkürzen Sie das Datum):

     Date.prototype.format=function(str){ var map={ dd:this.getDate(), mm:this.getMonth()+1, yyyy:this.getFullYear() } return str.split("-").map(el=>map[el]||"00").join("-"); } var arr=[]; for(key in output){ arr.push({date:new Date(key*1000*60*60*24).format("dd-mm-yyyy"),events:output[key]}); } console.log(arr); 

    http://jsbin.com/jonaqefaxu/edit?console

     var data = [ { "date_from": "2017-05-06 00:00:00", "date_to": "2017-05-08 23:59:59", "event": "code jam" }, { "date_from": "2017-05-03 00:00:00", "date_to": "2017-05-07 23:59:59", "event": "boxing day" } ]; var transformedData = data .map(datum => [{date: datum.date_from.substr(0, 10)}, {date: datum.date_to.substr(0, 10)}]) .reduce((allItems, items) => allItems.concat(items), []) .map(item => ({date: item.date, state: {name:'San francisco'}})); console.log(transformedData); 

    Sie können ein neues Array mit Daten aus dem vorherigen Array erstellen.

      var data = [{ "date_from": "2017-05-06 00:00:00", "date_to": "2017-05-08 23:59:59", "event": "code jam" }, { "date_from": "2017-05-03 00:00:00", "date_to": "2017-05-07 23:59:59", "event": "boxing day" } ]; var newData =[] data.forEach(function(item){ newData.push({ date:item['date_from'].slice(0, -9), // removing characters from last state:{ name:'Some State'} }) }); console.log(newData) 
    Lassen Sie uns Javascript Schönheit und nützlich machen.