Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Chia mảng thành các mảng con độ dài 2 (chunking) trong JavaScript

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.