[Home] > Snippets  > Languages  > JavaScript  > Arrays  >  Split an array into chunks

Split an array into chunks

JavaScript

const chunk = (arr, size) =>
arr.reduce((acc, e, i) => (i % size ? acc[acc.length - 1].push(e) : acc.push([e]), acc), [])

TypeScript

const chunk = <T,>(arr: T[], size: number): T[][] =>
arr.reduce((acc, e, i) => (i % size ? acc[acc.length - 1].push(e) : acc.push([e]), acc), [] as T[][])

Examples

chunk([1, 2, 3, 4, 5, 6, 7, 8], 3) // [[1, 2, 3], [4, 5, 6], [7, 8]]
chunk([1, 2, 3, 4, 5, 6, 7, 8], 4) // [[1, 2, 3, 4], [5, 6, 7, 8]]