From c2513f5730ff4834fa44a1d55b1b518a9066bc5a Mon Sep 17 00:00:00 2001 From: Robin van Zanten <38441984+RCVZ@users.noreply.github.com> Date: Thu, 6 May 2021 16:05:03 +0200 Subject: [PATCH] feat(project): add chunk collection util --- src/utils/collection.ts | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/utils/collection.ts b/src/utils/collection.ts index 1195398ee..c2b7006b4 100644 --- a/src/utils/collection.ts +++ b/src/utils/collection.ts @@ -1,14 +1,26 @@ import type { Playlist } from 'types/playlist'; const getCategoriesFromPlaylist = (playlist: Playlist) => - playlist.reduce((categories: string[], item) => categories.includes(item.genre) ? categories : categories.concat(item.genre), []) - + playlist.reduce( + (categories: string[], item) => + categories.includes(item.genre) + ? categories + : categories.concat(item.genre), + [], + ); const filterPlaylistCategory = (playlist: Playlist, filter: string) => { - if (!filter) return playlist + if (!filter) return playlist; - return playlist.filter(({ genre }) => genre === filter) + return playlist.filter(({ genre }) => genre === filter); +}; -} +const chunk = (input: T[], size: number) => { + return input?.reduce((arr: T[][], item, idx: number) => { + return idx % size === 0 + ? [...arr, [item]] + : [...arr.slice(0, -1), [...arr.slice(-1)[0], item]]; + }, []); +}; -export { getCategoriesFromPlaylist, filterPlaylistCategory } +export { getCategoriesFromPlaylist, filterPlaylistCategory, chunk };