似乎无法识别问题(将数组拆分为块)



所以这个函数应该将数组分成第二个参数大小的块,例如[1,2,3,4],第二个参数2将返回[[1,2],[3,4]],如果数字是3,它将返回[[1,2,3],[4]]等等。我的函数似乎以类似的方式表现,但它只返回第一个块,随后的块只是空数组。每次迭代后,我将索引增加第二个参数,所以我不确定为什么它不起作用。有人能解释一下这里到底发生了什么,逻辑上的错误在哪里?

let arr = [1, 2, 3, 4, 5, 6]
function test(arr, num) {
let idx = 0;
let newArr = []
while (idx < arr.length) {
newArr.push(arr.slice(idx, num))
idx = idx + num
}
return newArr
}
console.log(test(arr, 2))

您需要索引作为Array#slice的第二个参数,而不是slice的长度。

例如,如果您取第二个数组index = 2,第二个参数必须是4,即切片的结束索引。

chunks
values   1 2 3 4 5 6
indices  0 1 2 3 4 5
slice    0 2           1 2
2 4       3 4
4 6   5 6   

function test(arr, num) {
let idx = 0;
let newArr = [];
while (idx < arr.length) {
newArr.push(arr.slice(idx, idx += num));
}
return newArr;
}
let arr = [1, 2, 3, 4, 5, 6];
console.log(test(arr, 2));

最新更新