Use slice in a loop to create array chunks
const chunk = (arr, size) => {
return Array.from(
{ length: Math.ceil(arr.length / size) },
(_, i) => arr.slice(i * size, i * size + size)
);
};
const chunked = chunk([1, 2, 3, 4, 5], 2);
console.log(chunked); // [[1, 2], [3, 4], [5]]const items = [1, 2, 3, 4, 5, 6, 7, 8, 9];
// Create chunks of 3
const chunks = [];
for (let i = 0; i < items.length; i += 3) {
chunks.push(items.slice(i, i + 3));
}
console.log(chunks);
// Functional approach
const chunk = (arr, size) =>
Array.from(
{ length: Math.ceil(arr.length / size) },
(_, i) => arr.slice(i * size, i * size + size)
);
console.log(chunk(items, 4));const chunked = arr.reduce((acc, item, i) => {
const idx = Math.floor(i / size);
acc[idx] = [...(acc[idx] || []), item];
return acc;
}, []);const page = (arr, pageNum, pageSize) =>
arr.slice(pageNum * pageSize, (pageNum + 1) * pageSize);Avoid mutating original array
// DON'T DO THIS
while (arr.length) {
chunks.push(arr.splice(0, size)); // Mutates original
}✓ Works in all modern browsers (ES2015+)