Computer >> Máy Tính >  >> Lập trình >> Javascript

Chunking mảng trong mảng trong JavaScript


Chúng tôi bắt buộc phải viết một hàm JavaScript lấy một mảng số làm đối số đầu tiên và một số đơn lẻ, chẳng hạn như num, làm đối số thứ hai. Số sẽ luôn nhỏ hơn hoặc bằng độ dài của mảng.

Hàm nên chuẩn bị một mảng mới phải chứa số lượng các mảng con. Tất cả các mảng con phải chứa số mảng bằng nhau nếu độ dài của mảng chính xác chia hết cho num, nếu không, chỉ mảng con cuối cùng mới chứa số phần tử khác nhau.

Ví dụ -

Nếu mảng đầu vào và số là -

const arr = [1, 2, 3, 4, 5, 6, 7, 8];
const num = 3;

Do đó, đầu ra cho đầu vào ở trên sẽ giống như thế này -

const output = [
   [1, 2, 3],
   [4, 5, 6],
   [7, 8]
];

Ví dụ

Mã cho điều này sẽ là -

const arr = [1, 2, 3, 4, 5, 6, 7, 8];
const num = 3;
const chunkArray = (arr = [], num = 1) => {
   const { length: l } = arr;
   const elPerArr = Math.ceil(l / num);
   const res = arr.reduce((acc, val, ind) => {
      const curr = Math.floor(ind / elPerArr);
      if(!acc[curr]){
         acc[curr] = [val];
      }else{
         acc[curr].push(val);
      }
      return acc;
   }, []);
   return res;
};
console.log(chunkArray(arr, num));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8 ] ]