Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

172
Visualizações
Javascript Array = Agregar fechas faltantes

Tengo algunos datos de las ventas de nuestra tienda de bicicletas a lo largo del día y estamos enviando esos datos a través de un bucle para crear una matriz.

Nuestro código parece

 var sales_array = []; for (var i = 0; i < data_feed.length; i++) { var sales_values = Object.values(data_feed[i]); sales_values = sales_values[0].split(";"); var date = sales_values[0]; var sales = sales_values[10]; if(sales != '') { sales_array.push(date+','+sales); } }

Y esto funciona muy bien, con una salida que parece algo así

 "2022-02-07T16:20:00+00:00,20" "2022-02-08T09:18:00+00:00,4500" "2022-02-08T14:25:00+00:00,210" "2022-02-09T11:21:00+00:00,100"

El problema es que, si hay un par de días en que la tienda está cerrada y no hay ventas, terminamos con fechas faltantes en nuestra salida.

Por ejemplo, el 27 de febrero estábamos abiertos, pero el 28 y el 1 estábamos cerrados y el 2 volvimos a abrir, así que terminamos con

 "2022-02-27T16:45:00+00:00,3000" "2022-02-27T17:10:00+00:00,450" -----MISSING----- "2022-03-02T08:29:00+00:00,1000" "2022-03-02T15:54:00+00:00,550"

¿Cómo podemos cambiar nuestro código de bucle, de modo que incluso si falta una fecha, la agregará con un valor de venta de 0, por lo que lo anterior se vería así?

 "2022-02-27T16:45:00+00:00,3000" "2022-02-27T17:10:00+00:00,450" "2022-02-28T00:00:00+00:00,0" "2022-03-01T00:00:00+00:00,0" "2022-03-02T08:29:00+00:00,1000" "2022-03-02T15:54:00+00:00,550"
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

agrega estos codigos

 Date.prototype.addDays = function(noOfDays){ var tmpDate = new Date(this.valueOf()); tmpDate.setDate(tmpDate.getDate() + noOfDays); return tmpDate; } var sort = sales_array.map(e => e.split(',')[0]).sort((a, b) => a.localeCompare(b)) for (var i = new Date(sort[0]).addDays(1); i < new Date(sort[sort.length-1]); i = i.addDays(1)) { sales_array.push(i.toISOString().split('T')[0]+'T00:00:00+00:00,0'); } sales_array = sales_array.sort((a, b) => a.split(',')[0].localeCompare(b.split(',')[0])) 

 var data_feed = [ { a: '2022-02-27T17:10:00+00:00;0;0;0;0;0;0;0;0;0;450' }, { a: '2022-03-02T08:29:00+00:00;0;0;0;0;0;0;0;0;0;1000' } ] var sales_array = []; for (var i = 0; i < data_feed.length; i++) { var sales_values = Object.values(data_feed[i]); sales_values = sales_values[0].split(";"); var date = sales_values[0]; var sales = sales_values[10]; if(sales != '') { sales_array.push(date+','+sales); } } Date.prototype.addDays = function(noOfDays){ var tmpDate = new Date(this.valueOf()); tmpDate.setDate(tmpDate.getDate() + noOfDays); return tmpDate; } var sort = sales_array.map(e => e.split(',')[0]).sort((a, b) => a.localeCompare(b)) for (var i=new Date(sort[0]).addDays(1); i < new Date(sort[sort.length-1]); i=i.addDays(1)) { sales_array.push(i.toISOString().split('T')[0]+'T00:00:00+00:00,0'); } sales_array = sales_array.sort((a,b) => a.split(',')[0].localeCompare(b.split(',')[0])) console.log(sales_array);

about 4 years ago · Juan Pablo Isaza Relatório

0

asumiendo la variable data_feed como

 var data_feed = [ {value: "2022-02-07T16:20:00+00:00;;;;;;;;;;20"}, {value: "2022-02-08T09:18:00+00:00;;;;;;;;;;4500"}, {value: "2022-02-10T14:25:00+00:00;;;;;;;;;;210"}, {value: "2022-02-13T11:21:00+00:00;;;;;;;;;;100"} ]

agregué algunos códigos dentro del tuyo

 var sales_array = []; var next_current_ymd; // store expected 'next ymd' for compare with in next index for (var i = 0; i < data_feed.length; i++) { var sales_values = Object.values(data_feed[i]); sales_values = sales_values[0].split(";"); var date = sales_values[0]; // me added - start var current_ymd = date.substring(0,10); // next_current_ymd <= 'missing date' you explained < current_ymd // loop 'missing date' sequentially until current date // skipped first time because 'next_current_ymd' is null for(;next_current_ymd < current_ymd;){ sales_array.push(next_current_ymd + 'T00:00:00+00:00,0'); // next_current_ymd + 1 var next_d = new Date(next_current_ymd); next_d.setUTCDate(next_d.getUTCDate() + 1); next_current_ymd = next_d.toISOString().substr(0,10); } // steor 'expected next ymd' var d = new Date(current_ymd); d.setUTCDate(d.getUTCDate() + 1); next_current_ymd = d.toISOString().substr(0,10); // me added - end var sales = sales_values[10]; if(sales != '') { sales_array.push(date+','+sales); } } console.log(sales_array);

resultados:

 [ "2022-02-07T16:20:00+00:00,20", "2022-02-08T09:18:00+00:00,4500", "2022-02-09T00:00:00+00:00,0", "2022-02-10T14:25:00+00:00,210", "2022-02-11T00:00:00+00:00,0", "2022-02-12T00:00:00+00:00,0", "2022-02-13T11:21:00+00:00,100" ]
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda