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.