Ruby の each_slice、PHP の array_chunk みたいなやつです。
例えば [1, 2, 3, 4, 5, 6, 7] を3個ずつに分けて [[1, 2, 3], [4, 5, 6], [7]] を作りたい場合などに使えると思います。
TypeScript
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[][]
)
}
chunk([1, 2, 3, 4, 5, 6, 7], 3) // -> [[1, 2, 3], [4, 5, 6], [7]]
JavaScript
function chunk(arr, size) {
return arr.reduce(
(newarr, _, i) => (i % size ? newarr : [...newarr, arr.slice(i, i + size)]),
[]
)
}