📅  最后修改于: 2023-12-03 14:53:52.309000             🧑  作者: Mango
在 JavaScript 中,我们经常需要将一个数组拆分成多个块,以对每个块进行一些特定的操作。例如,我们可以将一个长的数组均分为多个小块,或者按某种条件将一些数组元素组成块。
slice()
方法最常见的方法是使用内置的 slice()
方法。它可以根据给定的起始索引和结束索引创建一个新的数组,并返回该数组的副本。
function chunkArray(arr, size) {
let result = []
for (let i = 0; i < arr.length; i += size) {
result.push(arr.slice(i, i + size))
}
return result
}
这个函数将数组 arr
拆分成大小为 size
的块,并将它们放入一个新数组中。注意,如果最后一个块不足 size
个元素,则它会被忽略。
另一种方法是使用递归。这种方法对于不同大小的块更加灵活和有效。我们可以不断地递归拆分数组,直到只剩下一个元素,然后将这些元素拼接在一起。
function chunkArray(arr, size) {
if (arr.length <= size) {
return [arr]
} else {
return [arr.slice(0, size)].concat(chunkArray(arr.slice(size), size))
}
}
这个函数将数组 arr
拆分为大小为 size
的块,并将它们放在一个新数组中。注意,这种方法与 slice()
方法不同,如果最后一个块不足 size
个元素,则它将作为一个单独的块返回。
让我们使用上面的两种方法来将一个数组拆分成大小为 2
的块:
const myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
const chunkedArray1 = chunkArray(myArray, 2)
// Output: [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
const chunkedArray2 = chunkArray(myArray, 3)
// Output: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]
如您所见,我们可以根据需要指定不同的块大小,并使用两种方法之一来拆分数组。