前端面試手寫練習 - chunk
- 文章發表於
問題
chunk 是一個函式 ,它可以將輸入陣列分割成長度為 size
的區塊,如果數組不能均勻分割,最後一個區塊將會存放所有剩餘的元素。此外該函式並不會改變原始陣列。
function chunk(arr: Array, size: number = 1): Array<Array>
範例
chunk(['a', 'b', 'c', 'd']) // => [['a'], ['b'], ['c'], ['d']]chunk([1, 2, 3, 4], 2) // => [[1, 2], [3, 4]]chunk([1, 2, 3, 4], 3) // => [[1, 2, 3], [4]]
練習區
在了解問題後,可以嘗試先寫下您的思路,再到下方的練習區域實際寫出程式碼。
筆者思路
- 首先檢查
arr
是否為陣列,以及size
是否大於等於1
。如果任一條件不滿足,回傳陣列本身。 - 遍歷和分割陣列:使用 for 迴圈遍歷輸入陣列,每次迴圈的長度為
size
。在每次迭代中,使用array.slice(i, i + size)
來獲取從i
到size
這段長度的陣列片段,並將這個片段推送到result
。 - 返回結果
筆者解答
function chunk(arr, size = 1) {if (!Array.isArray(arr) || size < 1) {return arr}const result = []for (let i = 0; i < arr.length; i += size) {result.push(arr.slice(i, i + size))}return result}
相關題目
如果您喜歡這篇文章,請點擊下方按鈕分享給更多人,這將是對筆者創作的最大支持和鼓勵。