所以这个函数应该将数组分成第二个参数大小的块,例如[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));