我正在编写一个函数,它接受一个数组和一个数字参数,并返回从给定数组中分割的数组数量。所以调用 chunkArrayInGroups(["a", "b", "c", "d"], 2);应返回 [a,b] [c,d]。我的代码返回 [a,c] [b,d]。这应该是一个简单的解决方案,但我仍然无法弄清楚。
function chunkArrayInGroups(arr, size) {
// Break it up.
var newarr=[];
var amount=0;
if(arr.length%2===0)
{
amount=arr.length/size;
}
else
amount=(arr.length/size)+1;
console.log(amount);
for(i=0;i<amount;i++)
{
newarr[i]=[];
}
console.log(newarr);
for(z=0;z<arr.length;z=z+size)
{
for(x=0;x<size;x++)
{
newarr[x].push(arr[z+x]);
}
}
console.log(newarr);
}
chunkArrayInGroups(["a", "b", "c", "d"], 2);
此外,如果您发现语法错误,请纠正我,我习惯于编写 Java。谢谢!
最佳答案
遍历数组中的所有项目,每当索引 % size 为 0 时,添加另一个子数组,然后将项目推送到最后一个子数组。
function chunkArrayInGroups(arr, size) {
var chunks = [];
for(var i = 0; i < arr.length; i++) {
if(i % size === 0) {
chunks.push([]);
}
chunks[chunks.length - 1].push(arr[i]);
}
return chunks;
}
console.log('Size 2', JSON.stringify(chunkArrayInGroups(['a', 'b', 'c', 'd'], 2)));
console.log('Size 3', JSON.stringify(chunkArrayInGroups(['a', 'b', 'c', 'd'], 3)));
console.log('Size 4', JSON.stringify(chunkArrayInGroups(['a', 'b', 'c', 'd'], 4)));
console.log('Size 6', JSON.stringify(chunkArrayInGroups(['a', 'b', 'c', 'd'], 6)));
关于javascript - 尝试在javascript中将数组拆分为指定数量的子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45466125/