Mô tả bài toán
Chia mảng thành các mảng con độ dài 2. Phần tử cuối có thể là mảng độ dài 1 nếu số lượng lẻ.
Ví dụ minh họa
const arr = [1, 2, 3, 4, 5, 6, 7];
const chunk = arr => {
const size = 2;
const chunkedArray = [];
for (let i = 0; i < arr.length; i++) {
const last = chunkedArray[chunkedArray.length - 1];
if (!last || last.length === size) {
chunkedArray.push([arr[i]]);
} else {
last.push(arr[i]);
}
}
return chunkedArray;
};
console.log(chunk(arr));
Kết quả
[ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7 ] ]
Cách viết hiện đại
const chunk = (arr, size = 2) =>
Array.from({length: Math.ceil(arr.length/size)}, (_, i) =>
arr.slice(i*size, i*size+size));
Ứng dụng
Phân trang, hiển thị grid 2 cột, xử lý batch API requests.