JavaScript将数组拆分为动态数量的数组

JavaScript将数组拆分为动态数量的数组,javascript,ecmascript-6,Javascript,Ecmascript 6,有没有一种很好的ES6方法可以将一个数组拆分为一个数组数组,让源数组中的每个元素进入下一个目标数组,并在所有源数组中重复 比如说 source = [1,2,3,4,5,6,7,8,9,10,11,12,13] 如果目标数组是2,我希望得到输出 output = [ [1,3,5,7,9,11,13], [2,4,6,8,10,12] ] output = [ [1,4,7,10,13], [2,5,8,11], [3,6,9,12] ] 如果目标数组是3,我希望得到输出

有没有一种很好的ES6方法可以将一个数组拆分为一个数组数组,让源数组中的每个元素进入下一个目标数组,并在所有源数组中重复

比如说

source = [1,2,3,4,5,6,7,8,9,10,11,12,13]
如果目标数组是2,我希望得到输出

output =  [ 
 [1,3,5,7,9,11,13],
 [2,4,6,8,10,12]
]
output =  [ 
 [1,4,7,10,13],
 [2,5,8,11],
 [3,6,9,12]
]
如果目标数组是3,我希望得到输出

output =  [ 
 [1,3,5,7,9,11,13],
 [2,4,6,8,10,12]
]
output =  [ 
 [1,4,7,10,13],
 [2,5,8,11],
 [3,6,9,12]
]
使用reduce,就可以做到这一点。以下是针对目标阵列大小的解决方案:

[1,2,3,4,5,6,7,8,9,10,11,12,13].reduce(function (acc, curr, idx) {
  acc[idx % size] ? acc[idx % size].push(curr) : acc[idx % size] = [curr];
  return acc
}, []);
使用reduce,就可以做到这一点。以下是针对目标阵列大小的解决方案:

[1,2,3,4,5,6,7,8,9,10,11,12,13].reduce(function (acc, curr, idx) {
  acc[idx % size] ? acc[idx % size].push(curr) : acc[idx % size] = [curr];
  return acc
}, []);

你可以这样做

得到除数和余数 创建一个长度为n的数组,元素的第一个余数的值为`除数+1或0,我们使用它将额外的元素平均分配给初始元素 在我们上面创建的数组上循环,切片数组并添加到最终数组中 让源=[1,2,3,4,5,6,7,8,9,10,11,12,13] 让divideInParts=arr,number=>{ 让除数=Math.floorarr.length/number 让余数=arr.length%个数 设tempArr=Array。从{length:number},ui=>除数+余数->0 让我们开始=0 让final=tempArr.mapv,i=>{ 设val=i==0?arr.slice0,v:arr.slicestart,start+v 开始+=v 返回值 } 返回决赛 } console.logdivideInPartssource,2 console.logdivideInPartssource,3 console.logdivideInPartssource,13
console.logdivideInPartssource,10您可以这样做

得到除数和余数 创建一个长度为n的数组,元素的第一个余数的值为`除数+1或0,我们使用它将额外的元素平均分配给初始元素 在我们上面创建的数组上循环,切片数组并添加到最终数组中 让源=[1,2,3,4,5,6,7,8,9,10,11,12,13] 让divideInParts=arr,number=>{ 让除数=Math.floorarr.length/number 让余数=arr.length%个数 设tempArr=Array。从{length:number},ui=>除数+余数->0 让我们开始=0 让final=tempArr.mapv,i=>{ 设val=i==0?arr.slice0,v:arr.slicestart,start+v 开始+=v 返回值 } 返回决赛 } console.logdivideInPartssource,2 console.logdivideInPartssource,3 console.logdivideInPartssource,13
console.logdivideInPartssource,10可以使用reduce来完成。您是否愿意使用lodash方法u.chunk?JS不能具有类似{[],[],…]的结构,它必须是[[],[],…]。我在下面发布的答案将创建正确的结构。可以使用reduce来完成。您是否愿意使用lodash方法551;.chunk?JS不能有类似{[],[],…]的结构,它必须是[[],[],…]。我在下面发布的答案将创建正确的结构。谢谢!正是我所希望的。谢谢!正是我所希望的。谢谢,是的,这会起作用&按照我将如何编写它的思路,但希望使用ES6语法,因为它减少了这种数组操作所需的代码量。谢谢,是的,这是可行的&按照我将如何编写它的思路,但希望使用ES6语法,因为它减少了这种数组操作所需的代码量。