← Wszystkie zadaniaJavaScript · Junior

groupBy: pogrupuj elementy

Napisz funkcję groupBy(array, getKey), która rozkłada elementy na grupy. Kluczem grupy jest getKey(item), a wartością tablica elementów w oryginalnej kolejności.

Na przykład groupBy([1, 2, 3, 4], (n) => (n % 2 ? "odd" : "even")) zwraca { odd: [1, 3], even: [2, 4] }.

Testy (4)

  1. expect(groupBy([1, 2, 3, 4], (n) => (n % 2 ? "odd" : "even"))).toEqual({ odd: [1, 3], even: [2, 4] });
  2. expect(groupBy(["one", "two", "three"], (s) => s.length)).toEqual({ 3: ["one", "two"], 5: ["three"] });
  3. expect(groupBy([], (x) => x)).toEqual({});
  4. const people = [{ name: "Ann", city: "Kyiv" }, { name: "Bob", city: "Warsaw" }, { name: "Eve", city: "Kyiv" }];
    expect(groupBy(people, (p) => p.city).Kyiv.map((p) => p.name)).toEqual(["Ann", "Eve"]);