I wanted to change my array of object to different format
I have below output,
let result = [
{
"team_details_id": 1,
"team_name": "Avengers",
"team_description": null,
"date_created": "2022-11-03T09:31:13.000Z",
"date_updated": "2022-11-03T09:31:13.000Z",
"created_by": "23",
"updated_by": null,
"team_participants_id": 2,
"user_id": 101,
"user_name": "test 2",
"email_id": "[email protected]",
"role_id": 3,
"is_active": 1,
"access_code": null
},
{
"team_details_id": 1,
"team_name": "Avengers",
"team_description": null,
"date_created": "2022-11-03T09:31:13.000Z",
"date_updated": "2022-11-03T09:31:13.000Z",
"created_by": "23",
"updated_by": null,
"team_participants_id": 3,
"user_id": 102,
"user_name": "test 3",
"email_id": "[email protected]",
"role_id": 3,
"is_active": 1,
"access_code": null
},
{
"team_details_id": 1,
"team_name": "Avengers",
"team_description": null,
"date_created": "2022-11-03T09:31:13.000Z",
"date_updated": "2022-11-03T09:31:13.000Z",
"created_by": "23",
"updated_by": null,
"team_participants_id": 4,
"user_id": 103,
"user_name": "test 4",
"email_id": "[email protected]",
"role_id": 3,
"is_active": 1,
"access_code": null
},
{
"team_details_id": 1,
"team_name": "Avengers",
"team_description": null,
"date_created": "2022-11-03T09:34:24.000Z",
"date_updated": "2022-11-03T09:34:24.000Z",
"created_by": "23",
"updated_by": "23",
"team_participants_id": 13,
"user_id": 104,
"user_name": "test 5",
"email_id": "[email protected]",
"role_id": 3,
"is_active": 1,
"access_code": null
},
{
"team_details_id": 5,
"team_name": "KantaraBuilders",
"team_description": null,
"date_created": "2022-11-03T09:35:23.000Z",
"date_updated": "2022-11-03T09:35:23.000Z",
"created_by": "23",
"updated_by": null,
"team_participants_id": 16,
"user_id": 105,
"user_name": "test 6",
"email_id": "[email protected]",
"role_id": 3,
"is_active": 1,
"access_code": null
},
{
"team_details_id": 5,
"team_name": "KantaraBuilders",
"team_description": null,
"date_created": "2022-11-03T09:35:23.000Z",
"date_updated": "2022-11-03T09:35:23.000Z",
"created_by": "23",
"updated_by": null,
"team_participants_id": 17,
"user_id": 106,
"user_name": "test 7",
"email_id": "[email protected]",
"role_id": 3,
"is_active": 1,
"access_code": null
}
]
And I wanted to convert to below format
let foramtedResponse = [{
"team_details_id": 1,
"team_name": "Avengers",
"participant_list":[{
"user_id": 101,
"user_name": "test 2",
"email_id": "[email protected]",
"role_id": 3
},{
"user_id": 102,
"user_name": "test 3",
"email_id": "[email protected]",
"role_id": 3,
},
{
"user_id": 103,
"user_name": "test 4",
"email_id": "[email protected]",
"role_id": 3
},
{
"user_id": 104,
"user_name": "test 5",
"email_id": "[email protected]",
"role_id": 3
}]
},
{
"team_details_id": 5,
"team_name": "KantaraBuilders",
"participant_list":[{
"user_id": 105,
"user_name": "test 6",
"email_id": "[email protected]",
"role_id": 3
},{
"team_participants_id": 17,
"user_id": 106,
"user_name": "test 7",
"email_id": "[email protected]",
"role_id": 3
}]
}
]
I wanted to do this with the help of map.reduce to reduce to nested array of object and I wanted to match the user_name,user_id and team_details_id for reference. Please help me Thanks in advance
See the following code for a possible solution. You forgot to add the members to the array and you didnt set the team_details_id.
let result = [
{
"team_details_id": 1,
"team_name": "Avengers",
"team_description": null,
"date_created": "2022-11-03T09:31:13.000Z",
"date_updated": "2022-11-03T09:31:13.000Z",
"created_by": "23",
"updated_by": null,
"team_participants_id": 2,
"user_id": 101,
"user_name": "test 2",
"email_id": "[email protected]",
"role_id": 3,
"is_active": 1,
"access_code": null
},
{
"team_details_id": 1,
"team_name": "Avengers",
"team_description": null,
"date_created": "2022-11-03T09:31:13.000Z",
"date_updated": "2022-11-03T09:31:13.000Z",
"created_by": "23",
"updated_by": null,
"team_participants_id": 3,
"user_id": 102,
"user_name": "test 3",
"email_id": "[email protected]",
"role_id": 3,
"is_active": 1,
"access_code": null
},
{
"team_details_id": 1,
"team_name": "Avengers",
"team_description": null,
"date_created": "2022-11-03T09:31:13.000Z",
"date_updated": "2022-11-03T09:31:13.000Z",
"created_by": "23",
"updated_by": null,
"team_participants_id": 4,
"user_id": 103,
"user_name": "test 4",
"email_id": "[email protected]",
"role_id": 3,
"is_active": 1,
"access_code": null
},
{
"team_details_id": 1,
"team_name": "Avengers",
"team_description": null,
"date_created": "2022-11-03T09:34:24.000Z",
"date_updated": "2022-11-03T09:34:24.000Z",
"created_by": "23",
"updated_by": "23",
"team_participants_id": 13,
"user_id": 104,
"user_name": "test 5",
"email_id": "[email protected]",
"role_id": 3,
"is_active": 1,
"access_code": null
},
{
"team_details_id": 5,
"team_name": "KantaraBuilders",
"team_description": null,
"date_created": "2022-11-03T09:35:23.000Z",
"date_updated": "2022-11-03T09:35:23.000Z",
"created_by": "23",
"updated_by": null,
"team_participants_id": 16,
"user_id": 105,
"user_name": "test 6",
"email_id": "[email protected]",
"role_id": 3,
"is_active": 1,
"access_code": null
},
{
"team_details_id": 5,
"team_name": "KantaraBuilders",
"team_description": null,
"date_created": "2022-11-03T09:35:23.000Z",
"date_updated": "2022-11-03T09:35:23.000Z",
"created_by": "23",
"updated_by": null,
"team_participants_id": 17,
"user_id": 106,
"user_name": "test 7",
"email_id": "[email protected]",
"role_id": 3,
"is_active": 1,
"access_code": null
}
]
const reduceResult = (result) =>
result.reduce((data, item) => {
let team_details = data.find(p => p.team_details_id === item.team_details_id);
if (!team_details) {
team_name = {
team_details_id: item.team_details_id,
team_name: item.team_name,
team_participants: [
{
user_id: item.user_id,
user_name: item.user_name,
email_id: item.email_id,
role_id: item.role_id,
}
]
}
data.push(team_name);
} else {
team_details.team_participants.push(
{
user_id: item.user_id,
user_name: item.user_name,
email_id: item.email_id,
role_id: item.role_id,
}
)
}
return data;
}, []);
console.log("reduceResult:-",reduceResult(result));