How can I use the Object.groupBy function with a variable?
For example:
const inventory = [
{ 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" }
]
I would like to display data grouped by a single key, based on the user’s selection.
let key = 'Phase';
const result = Object.groupBy(inventory, ({ key }) => key);
console.log(result);
Current output:
{
undefined: [
{ 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' }
]
}
Expected output:
{
Phase 1: [
{ 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 2: [
{ 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" }
]
}

