如何将数组转换为复杂的数组JavaScript?

假设我们需要编写一个函数,该函数接受一个Numbers和number n数组,其中n> =该数组的任何数字。如果数组的连续元素之和超过数字n,则需要使用该函数将数组分成子数组。

例如-

// if the original array is:
const arr = [2, 1, 2, 1, 1, 1, 1, 1];
//并且数字n为4-
//那么输出数组应该是:
const output = [ [ 2, 1 ], [ 2, 1, 1 ], [ 1, 1, 1 ] ];

让我们为该函数编写代码-

示例

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));

输出结果

控制台中的输出将为-

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