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

Tách mảng một chiều thành JavaScript mảng hai chiều

Chúng ta được yêu cầu viết một hàm lấy mảng một chiều làm đối số đầu tiên và một số n làm đối số thứ hai và chúng ta phải tạo n mảng con bên trong mảng cha (** nếu có thể) và chia các phần tử thành chúng cho phù hợp.

** nếu mảng chứa 9 phần tử và chúng tôi yêu cầu tạo 4 mảng con, thì việc chia 2 phần tử trong mỗi mảng con sẽ tạo ra 5 mảng con và 3 trong mỗi mảng sẽ tạo ra 3, vì vậy trong những trường hợp như vậy chúng ta phải lùi về mức thấp nhất gần nhất (3 trong trường hợp này) vì yêu cầu của chúng tôi là phân phối số lượng phần tử bằng nhau trong mỗi mảng con ngoại trừ mảng cuối cùng trong một số trường hợp đặc biệt.

Ví dụ -

// if the input array is:
const arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'];
// and the number is 2
//then the output should be:
const output = [ [ 'A', 'B', 'C', 'D', 'E' ], [ 'F', 'G', 'H', 'I' ] ];

Hãy viết mã cho chức năng này -

Ví dụ

const arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'];
const splitArray = (arr, rows) => {
   const itemsPerRow = Math.ceil(arr.length / rows);
   return arr.reduce((acc, val, ind) => {
      const currentRow = Math.floor(ind / itemsPerRow);
      if(!acc[currentRow]){
         acc[currentRow] = [val];
      }else{
         acc[currentRow].push(val);
      };
      return acc;
   }, []);
};
console.log(splitArray(arr, 2));

Đầu ra

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

[ [ 'A', 'B', 'C', 'D', 'E' ], [ 'F', 'G', 'H', 'I' ] ]