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

Làm cách nào để chuyển một mảng thành JavaScript mảng phức tạp?

Giả sử, chúng ta được yêu cầu viết một hàm nhận vào một mảng Số và số n, trong đó n> =bất kỳ số nào của mảng. Hàm bắt buộc phải chia mảng thành các mảng con nếu tổng các phần tử liên tiếp của mảng vượt quá số n.

Ví dụ -

// if the original array is:
const arr = [2, 1, 2, 1, 1, 1, 1, 1];
// and the number n is 4
// then the output array should be:
const output = [ [ 2, 1 ], [ 2, 1, 1 ], [ 1, 1, 1 ] ];

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

Ví dụ

const arr = [2, 1, 2, 1, 1, 1, 1, 1];
const splitArray = (arr, num) => {
   return arr.reduce((acc, val, ind) => {
      let { sum, res } = acc;
      if(ind === 0){
         return {sum: val, res:[[val]]};
      };
      if(sum + val <= num){
         res[res.length-1].push(val);
         sum +=val;
      }else{
         res.push([val]);
         sum = val;
      };
      return { sum, res };
   }, {
      sum: 0,
      res: []
   }).res;
};
console.log(splitArray(arr, 4));
console.log(splitArray(arr, 5));

Đầu ra

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

[ [ 2, 1 ], [ 2, 1, 1 ], [ 1, 1, 1 ] ]
[ [ 2, 1, 2 ], [ 1, 1, 1, 1, 1 ] ]