export const tail = <T>(a: Array<T>): T => a[a.length - 1];
export const chunkReducerForSize = (chunkSize = 5) => <T>(
result: T[][],
item: T
) => {
const lastElm = tail(result);
if (lastElm.length === chunkSize) {
result.push([item]);
} else {
lastElm.push(item);
}
return result;
};
export const toChunks = <T>(arr: T[], chunkSize = 5): Array<T[]> => {
return arr.reduce(chunkReducerForSize(chunkSize), [[]]);
};
(function sample() {
const fixedSizeData = Array.from(
{ length: Math.floor(Math.random() * 500) + 75 },
(e, i) => (e = Math.floor(Math.random() * 50) + 75)
);
const chunked = toChunks(fixedSizeData);
console.log(chunked);
})();