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

146
Visualizações
Necesidad de filtrar datos por fecha

Tengo algunos datos de resultados de consultas como ...

 "results": [ { "activityId": "7", "universityId": "23", "studentId": "25", "content": "Add course in cart", "activityType": "chat", "createdAt": "2022-04-10T22:25:29.798Z" }, { "activityId": "6", "universityId": "17", "studentId": "25", "content": "Add course in cart", "activityType": "chat", "createdAt": "2022-04-09T23:48:23.554Z" }, { "activityId": "5", "universityId": "17", "studentId": "25", "content": "Add course in cart", "activityType": "chat", "createdAt": "2022-04-08T23:48:21.841Z" } ]

Ahora necesito filtrar los datos como:

 [ { title: 2022-04-10 (here createdAt value), value: { "activityId": "5", "universityId": "17", "studentId": "25", "content": "Add course in cart", "activityType": "chat" } } ]

Estoy usando nestJS.

 const allActivity = []; Promise.all( results.map((value) => { if (allActivity.length <= 0) { const obj = { title: value.createdAt, values: value, }; allActivity.push(obj); } }), );

Solo necesito filtrar los datos con este formato o solo necesito completar mi función que he escrito a continuación.

about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Simplemente puede usar

 select * from data where createdAt like '2022-04-10%'

La tabla devuelta con esta consulta tendrá el mismo formato que necesita.

about 4 years ago · Santiago Trujillo Relatório

0

Suponiendo que desea agrupar por createdAt por tiempo de recorte.

 const results = [{activityId:"6",universityId:"17",studentId:"25",content:"Add course in cart",activityType:"chat",createdAt:"2022-04-09T23:48:23.554Z"},{activityId:"5",universityId:"17",studentId:"25",content:"Add course in cart",activityType:"chat",createdAt:"2022-04-08T23:48:21.841Z"},{activityId:"9",universityId:"11",studentId:"26",content:"Add course in cart",activityType:"chat",createdAt:"2022-04-08T23:48:21.841Z"}]; const map = new Map(); for (const ele of results) { const date = new Intl.DateTimeFormat('en-GB', { dateStyle: 'medium', }).format(new Date(ele.createdAt)); if (map.has(date)) { map.set(date, [ele, ...map.get(date)]); continue; } map.set(date, [ele]); } const output = Object.fromEntries(map.entries()); console.log(output);

about 4 years ago · Santiago Trujillo Relatório

0

Puede verificar esta implementación con reduce

 const results = [{ "activityId": "7", "universityId": "23", "studentId": "25", "content": "Add course in cart", "activityType": "chat", "createdAt": "2022-04-10T22:25:29.798Z" }, { "activityId": "6", "universityId": "17", "studentId": "25", "content": "Add course in cart", "activityType": "chat", "createdAt": "2022-04-09T23:48:23.554Z" }, { "activityId": "5", "universityId": "17", "studentId": "25", "content": "Add course in cart", "activityType": "chat", "createdAt": "2022-04-08T23:48:21.841Z" }, { "activityId": "8", "universityId": "17", "studentId": "25", "content": "New testing", "activityType": "chat", "createdAt": "2022-04-08T23:48:21.841Z" } ] //format your date from `2022-04-08T23:48:21.841Z` to `2022-04-08` const formatDate = (date) => date.split('T')[0] const finalResult = results .reduce((finalList, item) => { const currentItemFormattedDate = formatDate(item.createdAt) const foundItem = finalList.find(addedItem => formatDate(addedItem.title) === currentItemFormattedDate) //if it's not in the final list, we need to create a new title if (!foundItem) { finalList.push({ title: currentItemFormattedDate, value: [{ ...item }] }) } else { //if it's in the final list, we just need to push value foundItem.value.push({ ...item }) } return finalList }, []) console.log(finalResult)

La forma más fácil con groupBy , pero en lugar de title , estoy usando claves para la representación de fechas

 const results = [{ "activityId": "7", "universityId": "23", "studentId": "25", "content": "Add course in cart", "activityType": "chat", "createdAt": "2022-04-10T22:25:29.798Z" }, { "activityId": "6", "universityId": "17", "studentId": "25", "content": "Add course in cart", "activityType": "chat", "createdAt": "2022-04-09T23:48:23.554Z" }, { "activityId": "5", "universityId": "17", "studentId": "25", "content": "Add course in cart", "activityType": "chat", "createdAt": "2022-04-08T23:48:21.841Z" }, { "activityId": "8", "universityId": "17", "studentId": "25", "content": "New testing", "activityType": "chat", "createdAt": "2022-04-08T23:48:21.841Z" } ] const formatDate = (date) => date.split('T')[0] //groupBy is not fully supported for all browsers, so I use vanilla Javascript for it const groupBy = function(xs, key) { return xs.reduce(function(rv, x) { (rv[x[key]] = rv[x[key]] || []).push(x); return rv; }, {}); }; const finalResult = groupBy(results.map(item => ({...item, createdAt: formatDate(item.createdAt)})), "createdAt") console.log(finalResult)

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