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),因為我們將所有專案儲存在新陣列中,其長度與輸入陣列相同。
結論
我們在程式碼中提供了一種直接對給定陣列進行分塊的方法。該函式接受陣列和塊大小作為輸入引數。並返回一個包含專案塊的新陣列。該函式具有線性時間複雜度。
資料結構
網路
關係型資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP