Простое решение, которое мы можем создать с нуля для обработки группировки объектов

Вот массив, с которого мы начинаем:

Теперь мы хотим сгруппировать этот массив. Мы можем делать это по художникам или по годам.

Вот те результаты, которые нам нужны:

Группировка по годам

Группировка по исполнителю

Реализация

Объяснение

Наша groupBy функция - это каррированная функция, которая использует частичное приложение, чтобы сохранить возможность повторного использования этой функции.

Функция groupBy принимает ключ (например, "год") в качестве единственного аргумента и возвращает другую функцию group, которая, в свою очередь, принимает массив объектов, которые мы хотим отсортировать.

В функции group мы сокращаем массив, используя пустой объект в качестве аккумулятора (потому что это форма конечного результата, который нам нужен).

Внутри сокращения, скажем, наш ключ - «год», и это наша первая итерация (что означает, что out acc - пустой объект без каких-либо пар ключ-значение).

Полное раскрытие информации: я наткнулся на это решение в JamieMason’s на Github.

Примечание. Впервые этот пост был написан в моем блоге.