代码如下:
function chunkArrayInGroups(arr, size) {
// Break it up.
var newArr =[];
for(var i = 0;i < arr.length;i++){
for(var j = 0;j < size;j++){
newArr.push(arr.splice(0,size));
}
}
var result = [];
for(i = 0;i < newArr.length;i++){
if(newArr[i].length != 0){
result.push(newArr[i]);
}
}
return result;
}
chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7,8], 2);
这应该返回 - [[0, 1], [2, 3], [4, 5], [6, 7], [8]]
。但是,代码返回 [[0, 1], [2, 3], [4, 5], [6, 7]]
。此外,如果我的输入数组是 ([0,1,2,3,4,5,6,7,8,9,10],2),我的代码会按预期返回。
P.S:我特别想找出这段代码有什么问题,而不是完全不同的代码/方法。
最佳答案
基本上你只需要一个循环,因为你拼接数组并从中获取所需大小的 block 。
此行为可用于循环直到数组的长度为零并退出循环。
在这种情况下,结果已经准备就绪。
function chunkArrayInGroups(arr, size) {
var newArr = [];
// for (var i = 0; i < arr.length; i++) {
while (arr.length) { // add this for looping and checking
// for (var j = 0; j < size; j++) {
newArr.push(arr.splice(0, size)); // keep this for doing the work!
// }
}
// var result = [];
// for (i = 0; i < newArr.length; i++) {
// if (newArr[i].length != 0) {
// result.push(newArr[i]);
// }
// }
// return result;
return newArr; // return only newArray
}
console.log(chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 2));
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 将数组 block 分成组 - 我的代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46689542/