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 次

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.