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

Tách một mảng thành nhiều đoạn trong JavaScript

Chúng tôi bắt buộc phải viết một hàm, giả sử chunk () nhận trong một mảng chuỗi / số ký tự làm đối số đầu tiên và số n làm đối số thứ hai.

Chúng tôi đượ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 / n elements.

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 chúng ta có một phần tử trong mỗi mảng con, chúng ta bắt đầu lại với việc điền vào mảng con đầu tiên với phần tử thứ hai của nó. Tương tự, khi tất cả các mảng con chỉ có hai phần tử sau đó chúng ta điền phần tử thứ ba vào mảng đầu tiên, v.v.

Ví dụ:Nếu mảng đầu vào là -

const input = [656, 756, 5345, 67, 43, 76, 54, 768, 34];

Và số n là 3,

Sau đó, đầu ra phải là -

const output = [
   [ 656, 67, 54 ],
   [ 756, 43, 768 ],
   [ 5345, 76, 34 ]
];

Do đó, hãy viết mã cho chức năng này -

Chúng ta sẽ sử dụng phương thức Array.prototype.reduce () trên mảng ban đầu để tạo mảng mong muốn.

Ví dụ

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

const input = [656, 756, 5345, 67, 43, 76, 54, 768, 34];
const divideArray = (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(divideArray(input, 3));

Đầu ra

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

[ [ 656, 67, 54 ], [ 756, 43, 768 ], [ 5345, 76, 34 ] ]