【发布时间】:2019-11-16 04:35:49
【问题描述】:
我想将数组分割成均匀(或尽可能均匀)的块。 函数的输入应该是数组和块的大小。 假设你有数组
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]
如果你把它放在下面的函数中,以 5 作为块大小,它将导致以下结果
[[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17]
但是,我希望结果是
[[1,2,3,4,5],[6,7,8,9],[10,11,12,13],[14,15,16,17]
这意味着牺牲之前数组的长度,使它们的长度仅相差一个。
我目前正在使用的功能如下所述。我已经用模数尝试了各种东西,但我无法弄清楚。
function chunkArray(myArray, chunkSize){
var arrayLength = myArray.length;
var tempArray = [];
for (index = 0; index < arrayLength; index += chunkSize) {
myChunk = myArray.slice(index, index+chunkSize);
// Do something if you want with the group
tempArray.push(myChunk);
}
return tempArray;
}
【问题讨论】:
-
为什么第二个chunk的长度是4?其背后的规则是什么?
-
没有明确的基础来获取输出。有吗?
-
预期结果,如果最后一个数组只剩下2个元素,任何squenece或顺序?请提供可能的场景
标签: javascript arrays