Exercise 19: Group Array by Key
Problem Statement
Create a function `groupBy(arr, keyFn)` that groups array based on key function.
Example: groupBy([{age: 20}, {age: 30}, {age: 20}], x => x.age) → {20: [{age: 20}, {age: 20}], 30: [{age: 30}]}
Sample Output:
groupBy([{age: 20}, {age: 30}, {age: 20}], x => x.age) => {20: [{age: 20}, {age: 20}], 30: [{age: 30}]}
groupBy(["a", "bb", "ccc"], s => s.length) => {1: ["a"], 2: ["bb"], 3: ["ccc"]}Solution
const groupBy = (arr, keyFn) => {
return arr.reduce((acc, item) => {
const key = keyFn(item);
if (!acc[key]) acc[key] = [];
acc[key].push(item);
return acc;
}, {});
};Explanation
Overall Goal:
- Array ko key function ke basis par group karna.
Real world:
- Data aggregation: group by category.
- Analytics: group by date/type.