const docs = [
{
id: "89",
state: "accepted",
details: [
{ id: 20656, type: "Claimant", name: "First Name Last Name", first_name: "First Name", last_name: "Last Name", type_label: "claimant" }
]
},
{
id: "45",
state: "accepted",
details: [
{ id: 20656, type: "Claimant", name: "First Name Last Name", first_name: "First Name", last_name: "Last Name", type_label: "claimant" },
{ id: 20657, type: "Fellow", name: "Fellow First Name Fellow Last Name", first_name: "Fellow First Name", last_name: "Fellow Last Name", type_label: "fellow" }
]
},
{
id: "47",
state: "rejected",
details: [
{ id: 20656, type: "Claimant", name: "First Name Last Name", first_name: "First Name", last_name: "Last Name", type_label: "claimant" }
]
}
];
const groups = [...
docs.reduce((detailMap, { id: docId, state, details = [] }) => {
details.forEach(({ id, type, name }) => {
const detail = detailMap.get(id) ?? { id, type, name, docs: [] };
detail.docs.push(docId);
detailMap.set(id, detail);
});
return detailMap;
}, new Map)
.values()
];
console.log("groups: ", groups);