Rellenar fechas vacios. con mapa
by jpeter06
HTML
<h4>Rellenar fechas vaciass</h4>
<pre id="salida">
</pre>
CSS
#salida{
background:#eee
}
JavaScript
var salida=document.getElementById("salida");
var datos="datos formateados \n ";
var prog=[
{ts: "2019-09-11 21:00", pro: 100},
{ts: "2019-09-11 21:10", pro: 110},
{ts: "2019-09-11 21:20", pro: 120},
{ts: "2019-09-11 21:30", pro: 130},
{ts: "2019-09-11 21:40", pro: 140},
{ts: "2019-09-11 21:50", pro: 150},
{ts: "2019-09-11 21:60", pro: 160}
]
var real=[
// {ts: "2019-09-11 21:00", dem: 100}, //si no al principio tambien lo rellenamos.
{ts: "2019-09-11 21:10", dem: 110,aa:233},
{ts: "2019-09-11 21:30", dem: 130},
{ts: "2019-09-11 21:50", dem: 150}
]
function ceroCopy(ts,real){
var copy=JSON.parse(JSON.stringify(real[0]));
for (const prop in copy) {
copy[prop]=0;
}
copy['ts']=ts;
return copy;
}
//Proceso de relleno de huecos
if(real.length>0){
//Creamos un mapa con real
var mreal={};
var newReal=[];
var encontrados=0;
for(var r=0;r<real.length;r++)
mreal[real[r]['ts']]=real[r];
//Cogemos el primero de real y lo preparamos para duplicar
for(var i=0;i<prog.length;i++){
if(real.length <= encontrados) break; //Solo rellenamos los huecos
if( mreal[prog[i]['ts']]){
encontrados++;
newReal[i]=mreal[prog[i]['ts']];
}else{
datos+=' '+i+' ';
newReal[i]= ceroCopy(prog[i]['ts'],real);
}
}
}
salida.innerHTML=datos+JSON.stringify(newReal, null, " ");