现在我正在做freecodecamp上的一道练习。目前我遇到了一个逻辑错误,但不知道失败原因。
在这段代码中,我需要编写一个函数,根据参数来切割输入的数组。测试结果应该如下:
chunkArrayInGroups(["a", "b", "c", "d"], 2) should return [["a", "b"], ["c", "d"]].
chunkArrayInGroups([0, 1, 2, 3, 4, 5], 3) should return [[0, 1, 2], [3, 4, 5]].
chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 4) should return [[0, 1, 2, 3], [4, 5, 6, 7], [8]].
chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 2) should return [[0, 1], [2, 3], [4, 5], [6, 7], [8]].
以下是我的代码:
function chunkArrayInGroups(arr, size) {
var array = [];
for (var x = 0; x < arr.length ; x+=size){
var spliceArr = arr.splice(0,size);
array.push(spliceArr);
}
array.push(arr);
return array;
}
chunkArrayInGroups(["a", "b", "c", "d","e"], 2);
对于大多数情况,代码都能正常工作。但是对于最后一个条件,即
chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 2) should return [[0, 1], [2, 3], [4, 5], [6, 7], [8]].
在这种情况下,我无法得到正确的答案。我在控制台日志中进行了测试,结果输出如下:
[[0, 1], [2, 3], [4, 5], [6, 7, 8]].
我知道这不是一个难题,而且有很多更好的方法来解决它,但我能知道这段代码中的逻辑错误在哪里吗? 非常感谢!