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

103
Visualizações
Reestructuración del conteo basada en mes/semana/año

Tengo una matriz como esta (recuento y fecha)

 day = [ { count: 1, date: '2022-07-07' }, { count: 1, date: '2022-08-14' }, { count: 2, date: '2022-07-19' }, { count: 4, date: '2022-07-19' }, { count: 2, date: '2021-01-19' }, { count: 2, date: '2021-03-02' } ]

ahora estoy buscando una nueva matriz, debe ser una base de recuento total semana/mes/año

Estoy esperando como esto a continuación

 month = [ { count: 7, date: '2022-07-01' }, { count: 1, date: '2022-08-01' }, { count: 2, date: '2021-01-01' }, { count: 2, date: '2021-03-01' } ] year = [ { count: 9, date: '2022-01-01' }, { count: 4, date: '2021-01-01' }, ]

Igual que las bases semanales también

Estoy tratando de lograr algo como esto

 let month; for( d of day ) { if(condition) { // calculation for count adding month.push(d) } }
about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Se actualizó la respuesta según las sugerencias de RobG .

No implementé la parte groupByWeek(), pero la implementación de esta parte debería ser similar a la función groupByMonth() y groupByYear() en el código siguiente.

Para la parte groupByWeek, la parte complicada es cómo obtener el número de semana de la fecha, creo que la función getWeek() de los códigos compartidos de cmgchess en la sección de comentarios anterior sería útil, o puede usar una biblioteca de fechas para obtener la semana número.

 let day = [ { count: 1, date: "2022-07-07" }, { count: 1, date: "2022-08-14" }, { count: 2, date: "2022-07-19" }, { count: 4, date: "2022-07-19" }, { count: 2, date: "2021-01-19" }, { count: 2, date: "2021-03-02" }, { count: 5, date: "2021-07-19" }, ]; // create a map of {$year-$month-01: $count} based on the data in day array let groupByMonth = day.reduce((partialCount, item) => { let dateSplit = item.date.split("-"); let y = dateSplit[0]; let m = dateSplit[1]; if (Object.prototype.hasOwnProperty.call(partialCount, `${y}-${m}-01`)) { partialCount[`${y}-${m}-01`] += item.count; } else { partialCount[`${y}-${m}-01`] = item.count; } return partialCount; }, {}); // convert the groupByMonth map into an array of object(your expected format) let monthList = Object.keys(groupByMonth).map(key => { return { count: groupByMonth[key], date: key }; }); // create a map of {$year-01-01: $count} based on the data in day array let groupByYear = day.reduce((partialCount, item) => { let dateSplit = item.date.split("-"); let y = dateSplit[0]; if (Object.prototype.hasOwnProperty.call(partialCount, `${y}-01-01`)) { partialCount[`${y}-01-01`] += item.count; } else { partialCount[`${y}-01-01`] = item.count; } return partialCount; }, {}); // convert the groupByMonth map into an array of object(your expected format) let yearList = Object.keys(groupByYear).map(key => { return { count: groupByYear[key], date: key }; }); console.log("month:", monthList); console.log("year:", yearList);

about 4 years ago · Santiago Trujillo Relatório

0

Implementé una solución que devuelve un object con:

 key => value = month / year => totalCount

Espero que la salida esté bien para ti, me parece más lógico que usar solo una date del month / year para nombrarlo. Por cierto, puedo cambiar el formato de salida si es un problema para ti;)

Aquí está el código:

 const toArray = obj => Object.keys(obj).map(k => [k, obj[k]]); // transform an object to array of array [[key], [value]]; const sum = arr => arr.reduce((ps, a) => ps + a, 0); // sum an array let day = [ { count: 1, date: '2022-07-07' }, { count: 1, date: '2022-08-14' }, { count: 2, date: '2022-07-19' }, { count: 4, date: '2022-07-19' }, { count: 2, date: '2021-01-19' }, { count: 2, date: '2021-03-02' } ]; let years = Object.fromEntries( // transform the result to an object toArray( // transform the object to array day.reduce((acc, x) => { // sort the day by month / year // key (month or year) doesn't exist => create the key => append the element (acc[x.date.split('-').at(0)] = acc[x.date.split('-').at(0)] || []).push(x.count); return acc; }, {}) ).map(arr => [arr.at(0), sum(arr.at(1))]) // sum the counts ); let months = Object.fromEntries(toArray(day.reduce((acc, x) => { (acc[x.date.split('-').at(1)] = acc[x.date.split('-').at(1)] || []).push(x.count); return acc; }, {})).map(arr => [arr.at(0), sum(arr.at(1))])); console.log(months); console.log(years);

about 4 years ago · Santiago Trujillo 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