← Усі задачіJavaScript · Junior
groupBy: згрупувати елементи
Напишіть функцію groupBy(array, getKey), яка розкладає елементи за групами. Ключ групи - результат getKey(item), значення - масив елементів у вихідному порядку.
Наприклад, groupBy([1, 2, 3, 4], (n) => (n % 2 ? "odd" : "even")) повертає { odd: [1, 3], even: [2, 4] }.
Ctrl+Enter - запустити тести. Tab - відступ; щоб вийти з редактора клавіатурою, натисніть Esc, а потім Tab. Код зберігається в цьому браузері.
Тести (4)
expect(groupBy([1, 2, 3, 4], (n) => (n % 2 ? "odd" : "even"))).toEqual({ odd: [1, 3], even: [2, 4] });
expect(groupBy(["one", "two", "three"], (s) => s.length)).toEqual({ 3: ["one", "two"], 5: ["three"] });
expect(groupBy([], (x) => x)).toEqual({});
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"]);