Tengo la siguiente lógica, mi implementación actual funciona bien, el último rompecabezas que falta es el principal, quiero poder asignar la misma identificación principal a cada conjunto similar de elementos, la implementación actual establece el mismo grandParentId para todos los elementos en lugar de los relacionados. colección, en otros trabajos, los elementos que se encuentran en a1 deben tener el mismo abuelo y en b2 un abuelo diferente, estoy usando la biblioteca uuid para completar las identificaciones.
// arr let crossCheckArr = [{name: 'a'}, {name: 'b'}, {name: 'c'}, {name: 'd'}, {name: 'e'}] // Object const rawObj= { a1: [ { name: 'a' }, { name: 'b' }, { name: 'c' }, ], b2: [{ name: 'd'}], d3: [{ name: 'e'}], }; // Consolidation Logic const grandParentId = uuidv4(); const final = Object.entries(days).reduce((obj, [key, value], i) => { const parentId = uuidv4(); return { ...obj, [key]: crossCheckArr.filter((el) => { if (value.map((name) => name.name).includes(el.name)) { return Object.assign(el, { id: uuidv4(), parentId: parentId, grandParentId: grandParentId, }); } }), }; }, {}); // Final // { // a1: [ // { name: 'a' , parentId : 11, grandParentId : 123}, // { name: 'b', parentId : 11, grandParentId : 123}, // { name: 'c', parentId : 11, grandParentId : 123}, // ], // b2: [{ name: 'd',parentId : 22, grandParentId : 456}], // d3: [{ name: 'e',parentId : 33, grandParentId : 789}], // };