Простое решение, которое мы можем создать с нуля для обработки группировки объектов
Вот массив, с которого мы начинаем:
Теперь мы хотим сгруппировать этот массив. Мы можем делать это по художникам или по годам.
Вот те результаты, которые нам нужны:
Группировка по годам
Группировка по исполнителю
Реализация
Объяснение
Наша groupBy
функция - это каррированная функция, которая использует частичное приложение, чтобы сохранить возможность повторного использования этой функции.
Функция groupBy
принимает ключ (например, "год") в качестве единственного аргумента и возвращает другую функцию group
, которая, в свою очередь, принимает массив объектов, которые мы хотим отсортировать.
В функции group
мы сокращаем массив, используя пустой объект в качестве аккумулятора (потому что это форма конечного результата, который нам нужен).
Внутри сокращения, скажем, наш ключ - «год», и это наша первая итерация (что означает, что out acc - пустой объект без каких-либо пар ключ-значение).
Полное раскрытие информации: я наткнулся на это решение в JamieMason’s на Github.
Примечание. Впервые этот пост был написан в моем блоге.