Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

186
Views
Combinar elementos en json y calcular

Tengo 1 tabla de empleados, error de empleado después de consultar y agregar a la matriz js de esta manera:

 [ { id: 01, name: a, error: "late", counterorr: 3 }, { id:01, name: a, error: "forgot homework", counterorr:2 }, { id: 02, name: b, error: "late", counterorr:2 } ]

No soy muy bueno con json y su manejo, así que no entiendo cómo almacenarlo mejor. Lo que quiero mostrar en la pantalla:

 {id:01, name: a,error:[{nameErorr: late,counterorr:3}, {nameErorr:forgot homework,counterorr:3 }], id: 02, name: b, error:[{nameErorr:"late",counterorr:2}]}

No puedo encontrar una mejor manera de almacenarlo, si es así por favor ayúdame, gracias

Lo describiré de manera más simple que esto.

 user=[{ id: 01, have: orange number: 1 },{ id: 01, have: banana number: 2 },{ id: 02, have: orange number: 1 }]

quiero convertir esa matriz para que me guste esto

 user=[{ id: 01, have: [{name: orange, number: 1}, {name: banana, number: 2}] },{ id: 02, have: [{name: orange, number: 1}] }]

¿Es esto posible usando lodash _groupby?

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

intente usar una matriz para la tabla de empleados y la propiedad de errores

 [ { id: 01, name: a, errors: [ { nameErorr: late, counterorr: 3 }, { nameErorr: forgot, homework, counterorr: 3 }, ], }, { id: 02, name: b, errors: [{ nameErorr: "late", counterorr: 2 }] }, ];
about 4 years ago · Santiago Trujillo Report

0

Debe procesar las matrices en función del contenido. Vea si el elemento ya existe en la matriz procesada, si es así, modifíquelo. Si no, agregue una nueva entrada.

.reduce sería útil en este caso.

Para la primera mesa.

 const employeeError = [ { id: 01, name: "a", error: "late", counterorr: 3 }, { id: 01, name: "a", error: "forgot homework", counterorr: 2 }, { id: 02, name: "b", error: "late", counterorr: 2 } ] const processedEmployeeError = employeeError.reduce((acc, cur) => { const existingEployee = acc.find(emp => emp.id === cur.id); if(existingEployee) { existingEployee.error.push({nameError: cur.error, counterorr: cur.counterorr}) } else { acc.push({ id: cur.id, name: cur.name, error: [{ nameError: cur.error, counterror: cur.counterorr }] }); } return acc; },[]); console.log(processedEmployeeError); /* [{ "id": 1, "name": "a", "error": [{ "nameError": "late", "counterror": 3 }, { "nameError": "forgot homework", "counterorr": 2 }] }, { "id": 2, "name": "b", "error": [{ "nameError": "late", "counterror": 2 }] }] */

Del mismo modo, para la tabla de otros empleados.

 const user = [{ id: 01, have: 'orange', number: 1 }, { id: 01, have: 'banana', number: 2 }, { id: 02, have: 'orange', number: 1 }]; const processedUser = user.reduce((acc, cur) => { const existingUser = acc.find(u => u.id === cur.id); if(existingUser) { const existingFruits = existingUser.have.find(f => f.name === cur.have); if(existingFruits) { existingFruits.number += cur.number; } } else { acc.push({ id: cur.id, have: [{ name: cur.have, number: cur.number }] }); } return acc; }, []); console.log(processedUser);
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!