Skip to content

Instantly share code, notes, and snippets.

@nitaking
Created May 10, 2022 09:46
Show Gist options
  • Save nitaking/75b850f390c88fbc625408ea5a043849 to your computer and use it in GitHub Desktop.
Save nitaking/75b850f390c88fbc625408ea5a043849 to your computer and use it in GitHub Desktop.
function chunk(arr, size) {
return arr.reduce(
(newarr, _, i) => (i % size ? newarr : [...newarr, arr.slice(i, i + size)]),
[]
)
}
function chunk<T extends any[]>(arr: T, size: number) {
return arr.reduce(
(newarr, _, i) => (i % size ? newarr : [...newarr, arr.slice(i, i + size)]),
[] as T[][]
)
}
// https://www.typescriptlang.org/play?#code/GYVwdgxgLglg9mABBAFuA1gHgCqIKYAeUeYAJgM6ICGYAngNoC6AfABRUBOHAXItgDSJyMAF55eYEAFsARng4BKRAG8AsAChEWxBzxQQHJJw4A6XaRAQ8rDdruJWYPAHdjggPqCYSgLzMHMIgApEKieIgA-IhOrlyIvPQmSTFu1Fwm5AA2MFasMF6IANShYgqMCvy29lpM1JTYTExVWgoaAL4aGgD0XYgAtP709ACMggBMggDMjIL0ACyCAKyCAGwziPQA7IyMGhAI5HCZeCakeDIgAOasqBisI+NTgguIy4grgtvPCq2aGkA
function chunk<T extends any[]>(arr: T, size: number) {
return arr.reduce(
(newarr, _, i) => (i % size ? newarr : [...newarr, arr.slice(i, i + size)]),
[] as T[][]
)
}
// -> [[1, 2, 3], [4, 5, 6], [7]]
console.debug(chunk([1, 2, 3, 4, 5, 6, 7], 3))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment