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

javascriptweb developmentobject oriented programming更新于 2025/10/12 21:00:17

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

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

例如 −

// 如果输入数组是:
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' ] ]

相关文章


有用资源