本文旨在提供将数组拆分为更小的块的不同方法。
slice()
我们可以使用 for 循环遍历数组,同时使用 slice() 方法重复切片指定大小的块。
我们可以在每次迭代时将迭代器增加指定的大小,以便在前一个组结束后开始每个新组:
function chunkArray(array, size) { let result = [] for (let i = 0; i < array.length; i += size) { let chunk = array.slice(i, i + size) result.push(chunk) } return result } let arr = ['a', 'b', 'c', 'd', 'e', 'f']; let arrPairs = chunkArray(arr, 2); console.log(arrPairs);
splice()
我们可以使用 splice() 数组方法从接收到的数组中提取指定大小的元素:
function chunkArray(array, size) { let result = [] let arrayCopy = [...array] while (arrayCopy.length > 0) { result.push(arrayCopy.splice(0, size)) } return result } let arr = ['a', 'b', 'c', 'd', 'e', 'f']; let arrPairs = chunkArray(arr, 2); console.log(arrPairs);
由于 splice() 元素直接更改接收到的数组,我们应该使用扩展运算符 (...) 创建一个副本,以便操作不会影响接收到的数据。
然后通过调用 push() 方法将创建的每个组添加到结果中。
使用for...of
我们可以使用 for...of 循环遍历数组,将其分成更小的块,如下所示:
function chunkArray(array, size) { let result = [] for (value of array) { let lastArray = result[result.length - 1] if (!lastArray || lastArray.length == size) { result.push([value]) } else { lastArray.push(value) } } return result } let arr = ['a', 'b', 'c', 'd', 'e', 'f']; let arrPairs = chunkArray(arr, 3); console.log(arrPairs);
if 语句在 for...of 循环中用于检查结果数组当前是否为空或者最后一个块是否完整。
如果完成,我们可以使用当前值创建一个新组并将其推送到结果数组中。
如果它不完整,我们可以从结果中获取最后一个数组并将当前值推入其中,直到该组完成,换句话说,如果达到所需的大小。
日期:2020-06-02 22:16:26 来源:oir作者:oir