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

Phân chia một mảng - JavaScript

Giả sử, chúng ta bắt buộc phải viết một hàm nhận trong một dãy dãy gồm các ký tự chuỗi / số làm đối số đầu tiên và một số n làm đố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 / n phần tử. 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 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 bằng 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 tôi đ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, thì kết quả đầu ra phải là -

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

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ụ

Sau đây là mã -

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

Điều này sẽ tạo ra kết quả sau trong bảng điều khiển -

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