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?
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 }] }, ];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);