← Alle AufgabenJavaScript · Junior

groupBy: Elemente gruppieren

Schreib eine Funktion groupBy(array, getKey), die Elemente in Gruppen sortiert. Der Gruppenschlüssel ist getKey(item), und der Wert ist ein Array der Elemente in ihrer ursprünglichen Reihenfolge.

Zum Beispiel liefert groupBy([1, 2, 3, 4], (n) => (n % 2 ? "odd" : "even")) das Ergebnis { odd: [1, 3], even: [2, 4] }.

Tests (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"]);