Given an arry of objects, we need to group objects by any key.
const arrayObjects = [
{
"Phase":"Phase 1",
"Step":"Step 1",
"Task":"Task 1",
"Value":"5"
},
{
"Phase":"Phase 1",
"Step":"Step 1",
"Task":"Task 2",
"Value":"10"
},
{
"Phase":"Phase 1",
"Step":"Step 2",
"Task":"Task 1",
"Value":"15"
},
{
"Phase":"Phase 1",
"Step":"Step 2",
"Task":"Task 2",
"Value":"20"
},
{
"Phase":"Phase 2",
"Step":"Step 1",
"Task":"Task 1",
"Value":"25"
},
{
"Phase":"Phase 2",
"Step":"Step 1",
"Task":"Task 2",
"Value":"30"
},
{
"Phase":"Phase 2",
"Step":"Step 2",
"Task":"Task 1",
"Value":"35"
},
{
"Phase":"Phase 2",
"Step":"Step 2",
"Task":"Task 2",
"Value":"40"
}
];
{
"Task 1": [
{
"Phase": "Phase 1",
"Step": "Step 1",
"Task": "Task 1",
"Value": "5"
},
{
"Phase": "Phase 1",
"Step": "Step 2",
"Task": "Task 1",
"Value": "15"
},
{
"Phase": "Phase 2",
"Step": "Step 1",
"Task": "Task 1",
"Value": "25"
},
{
"Phase": "Phase 2",
"Step": "Step 2",
"Task": "Task 1",
"Value": "35"
}
],
"Task 2": [
{
"Phase": "Phase 1",
"Step": "Step 1",
"Task": "Task 2",
"Value": "10"
},
{
"Phase": "Phase 1",
"Step": "Step 2",
"Task": "Task 2",
"Value": "20"
},
{
"Phase": "Phase 2",
"Step": "Step 1",
"Task": "Task 2",
"Value": "30"
},
{
"Phase": "Phase 2",
"Step": "Step 2",
"Task": "Task 2",
"Value": "40"
}
]
}
const groupBy = (items, key) =>
items.reduce(
(result, item) => ({
...result,
[item[key]]: [...(result[item[key]] || []), item]
}),
{}
)
Quick Links
Books Authored by Me