这是我的代码。我修改了至少5次,返回的结果是0。奇怪。
function chunkArrayInGroups(arr, size) {
var array=[];
for(var i=0;i<=arr.length;i=i+size){
if(i+size<arr.length) array=arr.slice(i,i+size).push();
else if(i+size>=arr.length) array=arr.slice(i).push();
}
return array;
}
chunkArrayInGroups(["a", "b", "c", "d"], 2);
应该返回的是[[a,b],[c,d]]。
最佳答案
仔细看看你的代码:
array=arr.slice(i,i+size).push()
您正在分配 arr.slice.push
的结果至array
;但是 push
returns the length of the new array 。您可能真正想做的是插入 array
切片:
array.push(arr.slice(i,i+size))
你可能想知道为什么最终结果是 0
而不是2
,这就是您期望的 block 的长度。这是因为你迭代得有点太多了; i<=arr.length
应该是i<arr.length
.
function chunkArrayInGroups(arr, size) {
var array=[];
for (var i = 0; i < arr.length; i = i + size) {
if (i + size < arr.length) array.push(arr.slice(i, i + size));
else if (i + size >= arr.length) array.push(arr.slice(i));
}
return array;
}
console.log(chunkArrayInGroups(["a", "b", "c", "d"], 2));
关于javascript - 我的函数应该将数组分割成更小的数组并将它们放回原始数组,这有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41970640/