将一维数组拆分为二维数组JavaScript

我们需要编写一个函数,该函数将一维数组作为第一个参数,将数字n作为第二个参数,并且我们必须在父数组内部创建n个子数组(如果可能,**)并将元素划分为一个数组相应地。

**如果数组包含9个元素,而我们要求制作4个子数组,则将每个子数组中的2个元素相除会创建5个子数组,而每个3个会创建3个子数组,因此在这种情况下,我们必须回退到最接近的最低级别(在这种情况下为3个) ),因为在某些特殊情况下,除了最后一个元素外,我们的要求是在每个子数组中分配相等数量的元素。

例如-

// if the input array is:
const arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'];
//这个数字是2-
//那么输出应该是:
const output = [ [ 'A', 'B', 'C', 'D', 'E' ], [ 'F', 'G', 'H', 'I' ] ];

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

示例

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

输出结果

控制台中的输出将为-

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