JavaScript 中的数组嵌套分块


在本问题陈述中,我们的目标是借助 Javascript 功能来对数组中的数组进行分块。所以基本上我们将把一个数组分成更小的数组。

数组嵌套分块是什么意思?

数组分块是指将数组项排列成相同大小的较小子数组。或者我们可以说,数组嵌套分块是指将大型数组分成较小子数组或块的过程。因此,原始数组的项目被一起排列到嵌套数组中,而不是只有一个扁平数组。

让我们考虑一个数组:['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'] 如果我们以 2 为块大小对该数组进行分块,则输出数组将为:[ ['A', 'B'], ['C', 'D'], ['E', 'F'], ['G', 'H'] ]

我们可以在这里看到,原始数组已被分成四个大小为 2 的块。在每个块中,每个块都代表较大的数组中的一个单独数组。块大小表示子数组中存在的项目数量。

理解问题

正如我们所看到的,什么是数组嵌套分块!因此,我们的任务是将数组分成如上所示的较小子数组块。我们可以根据需要更改块的大小,它也取决于原始数组的大小。

给定问题的逻辑

由于我们必须定义一个函数来创建给定数组的块,因此我们将定义一个函数并在函数内传递两个参数。第一个参数是要分块的数组,第二个参数表示每个块的所需大小。

我们将创建一个空白分块数组来存储结果块并将它的值初始化为零。该函数还将使用 while 循环来迭代原始数组。在每次迭代中,我们将从当前索引和大小中切片数组的一部分。然后将其添加到分块数组中。之后,我们将索引增加大小以移动到下一个块。

算法

步骤 1:此算法的起点是声明一个函数来执行数组嵌套分块的任务。此函数采用两个参数:数组和块大小。

步骤 2:声明一个空白数组来存储执行迭代后的分块数组。

步骤 3:借助 while 循环,我们将遍历数组项。在这个循环中,我们将使用 slice 方法从起始索引处使用给定块大小切片数组。并使用块的大小递增索引值。

步骤 4:将分块数组存储在我们在第二步中定义的数组中。并将输出显示到控制台。

上述算法的代码

示例

//Function to get the chunking array
function chunkArray(arr, size) {
   const chunkedArr = [];
   let index = 0;

   while (index < arr.length) {
      chunkedArr.push(arr.slice(index, index + size));
      index += size;
   }
   return chunkedArr;
}
const originalArray = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20];
const chunkSize = 3;

const chunkedArray = chunkArray(originalArray, chunkSize);
console.log(chunkedArray);

输出

[ [ 11, 12, 13 ], [ 14, 15, 16 ], [ 17, 18, 19 ], [ 20 ] ]

复杂度

由于我们需要借助 while 循环一次迭代项目来对给定数组进行分块,因此函数生成分块数组所需的时间为 O(n)。这里 n 是提供的数组的长度。存储分块数组的空间复杂度也是 O(n),因为我们将所有项目存储在新数组中,其长度与输入数组相同。

结论

我们在代码中提供了一种直接对给定数组进行分块的方法。该函数接受数组和块大小作为输入参数。并返回一个包含项目块的新数组。该函数具有线性时间复杂度。

更新于:2023年8月11日

浏览量 232 次

开启你的职业生涯

通过完成课程获得认证

开始学习
广告