Javascript 将数组转换为子数组数组

Javascript 将数组转换为子数组数组,javascript,performance,refactoring,code-readability,Javascript,Performance,Refactoring,Code Readability,我想把一个数组转换成一个子数组数组 例如: let arr = [1, 2, 3, 4, 5, 6, 7, 8] arr = [[1, 2], [3, 4], [5, 6], [7, 8]] 现在如果此数组的长度不能被2整除 let arr = [1, 2, 3, 4, 5, 6, 7] arr = [[1, 2], [3, 4], [5, 6], [7]] 我对这个问题的解决方案不是很干净 const isPrime=num=>{ for(设i=2;i1; } 常量howToGroupA

我想把一个数组转换成一个子数组数组

例如:

let arr = [1, 2, 3, 4, 5, 6, 7, 8]
arr = [[1, 2], [3, 4], [5, 6], [7, 8]]
现在如果此数组的长度不能被2整除

let arr = [1, 2, 3, 4, 5, 6, 7]
arr = [[1, 2], [3, 4], [5, 6], [7]]
我对这个问题的解决方案不是很干净

const isPrime=num=>{
for(设i=2;i1;
}
常量howToGroupArray=(数组)=>{
if(array.length==1){
return[1,0]//一组1余数0
}
如果(!isPrime(array.length)| array.length==2),则为else{
return[2,0]//2个余数为0的组
}
否则{
return[2,1]//一组2和一组1
}
}
设值=[1,2,3,4,5,6,7]
让newArray=[]
设组=值。forEach((x,i)=>{
如果((i==0 | | i%2==0)和&(i!==(values.length-1))){
推送([x,值[i+1]]))
}
else如果((i%2==1)和&(i!==(values.length-1))){
无效的
}
否则{
howToGroupArray(值)[1]==0?null:newArray.push([x])
}

})
您可以使用一个索引进行迭代,并将其增量为2

然后获取切片索引并将零件放入结果数组

const
getGrouped=array=>{
让结果=[],
i=0;
而(iNgoc Vuong写了一篇关于分块数组的文章。他在他的帖子中提供了一些解决方案,我已经贴在下面了

循环通过阵列

constmyarray=[1,2,3,4,5,6,7,8,9];
const chunkedArray=chunk(myArray,2);
console.log(chunkedArray);
功能块(数组、大小){
常量chunkedArray=[];
for(设i=0;i
您可以使用
.reduce()
,而不是
.forEach()
,如下所示:


设值=[1,2,3,4,5,6,7]
让newArray=values.reduce((res,x,i,orig)=>
i%2?res:[…res,[x,…原始切片(i+1,i+2)]]
, [])

log(newArray)问题更适合于非常酷的,尽管很难理解的解决方案(至少对我来说)。对于值和newArray,使用const而不是let不是更好吗?吹毛求疵,我知道。@huwiler:是的,
const
会更好。我只是使用了OP包含的声明,但我更喜欢
const
。我最喜欢的答案是hit slice()版本。谢谢你的发现!