El título puede ser un poco confuso, pero básicamente estoy trabajando en un proyecto y requiere que tenga 2 conjuntos de listas de objetos. Tengo una matriz de grupo y una matriz de valores, he estado buscando durante horas algo que pueda funcionar, ¡pero aún no he encontrado nada!
Necesito una dirección para tomar estas 2 listas y combinarlas para mostrar algunas cosas para la interfaz de usuario, estoy usando ReactJS para mi interfaz (si eso ayuda) y ES6. Intentaré describir lo mejor que pueda los datos que necesito y, de alguna manera, iterarlo a través de una lista que categorice del grupo principal y los datos que coincidan se enviarán a una matriz debajo de ese grupo y continuaré hasta que los datos pertenezcan a otro grupo.
groupedObjects = { groupI: { id: 1, name: 'GroupI', array: [ {category: 'groupI', name: 'someValue1'}, {category: 'groupI', name: 'someValue2'}, {category: 'groupI', name: 'someValue3'}, {category: 'groupI', name: 'someValue4'} ]}, groupII: { id: 2, name: 'GroupII', array: [ {category: 'groupII', name: 'someValue1'}, {category: 'groupII', name: 'someValue2'}, {category: 'groupII', name: 'someValue3'}, {category: 'groupII', name: 'someValue4'} ]}, groupIII: { id: 3, name: 'GroupIII', array: [ {category: 'groupIII', name: 'someValue1'}, {category: 'groupIII', name: 'someValue2'}, {category: 'groupIII', name: 'someValue3'}, {category: 'groupIII', name: 'someValue4'} ]}};Y luego, de alguna manera, itere eso en una lista de tablas para mostrar en la interfaz de usuario que muestra el grupo I, el grupo II, el grupo III como tablas separadas en cada tabla, tiene los datos de la matriz en cada objeto.
Editar: aquí están los datos que necesitaba para combinar
const groups = [ { id: 1, name: 'GroupI' }, { id: 2, name: 'GroupII' }, { id: 3, name: 'GroupIII' }, ]; const data = [ { category: 'groupI', name: 'someValue1' }, { category: 'groupI', name: 'someValue2' }, { category: 'groupI', name: 'someValue3' }, { category: 'groupI', name: 'someValue4' }, { category: 'groupII', name: 'someValue1' }, { category: 'groupII', name: 'someValue2' }, { category: 'groupII', name: 'someValue3' }, { category: 'groupII', name: 'someValue4' }, { category: 'groupIII', name: 'someValue1' }, { category: 'groupIII', name: 'someValue2' }, { category: 'groupIII', name: 'someValue3' }, { category: 'groupIII', name: 'someValue4' } ];Como no proporcionaste ejemplos de esas dos matrices que necesitas combinar, haré suposiciones sobre sus estructuras y te daré un ejemplo de cómo debes hacerlo:
const groups = [ { id: 1, name: 'GroupI' }, { id: 2, name: 'GroupII', }, { id: 3, name: 'GroupIII', } ]; const data = [ { category: 'groupI', name: 'someValue1' }, { category: 'groupI', name: 'someValue2' }, { category: 'groupI', name: 'someValue3' }, { category: 'groupI', name: 'someValue4' }, { category: 'groupII', name: 'someValue1' }, { category: 'groupII', name: 'someValue2' }, { category: 'groupII', name: 'someValue3' }, { category: 'groupII', name: 'someValue4' }, { category: 'groupIII', name: 'someValue1' }, { category: 'groupIII', name: 'someValue2' }, { category: 'groupIII', name: 'someValue3' }, { category: 'groupIII', name: 'someValue4' } ]; let groupedData = {}; groups.forEach(g => { groupedData[g.name] = { id: g.id, name: g.name, array: data.filter(x => x.category.toLowerCase() === g.name.toLowerCase()) } }); console.log(groupedData); // This will give you the output you are expecting