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

Chunking một mảng trong JavaScript

Chúng tôi được yêu cầu viết một hàm chunk () nhận trong một mảng arr chuỗi / số ký tự là đối số đầu tiên và số n là đối số thứ hai.

Chúng ta được yêu cầu trả về một mảng gồm n mảng con, mỗi mảng chứa nhiều nhất arr.length / nelements. Và sự phân bố của các phần tử phải như thế này -

Phần tử đầu tiên nằm trong mảng con đầu tiên, thứ hai ở thứ hai, thứ ba ở thứ ba, v.v. Khi đã có một phần tử trong mỗi mảng con, chúng ta lại bắt đầu với việc điền vào mảng con đầu tiên với thành phần thứ hai của nó. Tương tự như vậy, khi tất cả các mảng con chỉ có hai phần tử sau đó chúng ta lấp đầy phần tử thứ ba trong mảng đầu tiên, v.v.

Ví dụ -

// if the input array is:
const input = [1, 2, 3, 4, 5, 6];
//then the output should be:
const output = [
   [1, 4],
   [2, 5],
   [3, 6]
];

Hãy viết mã cho hàm này, chúng ta sẽ sử dụng phương thức Array.prototype.reduce () trên originalarray để tạo mảng mong muốn. Mã cho điều này sẽ là -

Ví dụ

const input = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const chunk = (arr, size) => {
   return arr.reduce((acc, val, ind) => {
      const subIndex = ind % size;
      if(!Array.isArray(acc[subIndex])){
         acc[subIndex] = [val];
      } else {
         acc[subIndex].push(val);
      };
      return acc;
   }, []);
};
console.log(chunk(input, 4));

Đầu ra

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

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