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

 [ .. .. {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.

  • Unordentliche Klassennamen Bau
  • So verwenden Sie dynamische Eigenschaft im Objekt
  • Einbettung von SVG in ReactJS
  • Ist es als gute Praxis, um CallBacks zu vermitteln, um async Action zu reduzieren?
  • Was ist "Montage" in React js?
  • React.PropTypes.number float mit min und max
  • React.js ES6 Vermeidung von Bindung 'dieses' auf jede Methode
  • Reagieren Sie die Komponente und die ungültige Eingabe
  • 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.