Javascript:将数组拆分为多个部分
我有一个可以是任意长度的数组。需要把它分成几个部分。第一段长度为14,第二段长度为16Javascript:将数组拆分为多个部分,javascript,arrays,Javascript,Arrays,我有一个可以是任意长度的数组。需要把它分成几个部分。第一段长度为14,第二段长度为16 var size1 = 14; var size2 = 16; var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40]; var a
var size1 = 14;
var size2 = 16;
var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40];
var arrays = [];
if (a.length > 14){
for (i = 0; i < 14; i++) {
arrays.push(a.splice(0, size1));
}
for (i = 14 ; i < a.length; i++){
arrays.push(a.splice(0, size2));
}
} else {
arrays.push(a.splice(0, size1));
}
console.log(arrays);
然而,根据我所做的,我的数组只在14处分裂。你能给我一些建议吗
感谢使用Array.prototype.slice函数的解决方案:
变量a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40],
尺寸1=14,
尺寸2=16,
数组=[];
[0,大小1,大小2]。forEachfunction v,i,arr{
数组.pusharr[i+1]?a.slicev,v+arr[i+1]:a.slicearr[i-1]+v;
};
console.logarray 编辑:那么,像这样吗
var size1 = 14;
var size2 = 16;
var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40];
var head = a.slice(0, size1);
var arrays = [head];
while (size1 < a.length){
arrays.push(a.slice(size1, Math.min(size1+size2, a.length)));
size1 += size2;
}
console.log(arrays)
您可以尝试使用所有动态数组大小,它将获得所需的输出。 希望您正在寻找此解决方案
var size1 = 14;
var size2 = 16;
var flag=0;
var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40];
var arrays = [];
var t=a.length/14;
while(a.length>0){
if (flag==0 && a.length > 14){
arrays.push(a.splice(0, size1));
flag=1;
} else if(a.length>=16){
arrays.push(a.splice(0, size2));
}
else{
arrays.push(a.splice(0, a.length));
}
}
console.log(arrays)
您可以使用数组表示块长度,使用零表示其余部分,并通过保持以前长度的长度来映射块 它适用于任意数量的块 var chunks=[14,16,0], 数组=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40], 结果=chunks.maplast=>a=>array.slicelast,a?最后+=a:未定义0; console.logresult;
.作为控制台包装器{max height:100%!important;top:0;}您的答案似乎不是原创的。你不觉得吗?是的,这给了我答案。。谢谢你,我真的很感谢所有在这方面指导我的人。你好,罗曼,谢谢你的帮助。但我的数组停在2,即14,16。。其余的数字需要进入下一个数组部分。你能建议我如何自动化吗?你的意思是:固定长度的前两个块和最后一个块应该包含所有剩余的项目?所以应该是14、16、16、16、16、16…等等。。。第一部分的长度为14,第二部分的长度应为16。不清楚,您能否展示整个最终数组的外观?请原谅我不清楚,因此在我的示例中,数组a的数字最多为40。所以它应该是数组[0]=1,2,3,4,5,6,7,8,9,10,11,12,13,14;数组[1]=15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30;数组[2]=31,32,33,34,35,36,37,38,39,40。如果有更多的数字,它将继续在16节中添加。目前,由于我们正在执行arrays.pusha.slice0、size1和arrays.pushsize1、size1+size2,它将停止在arrays[2]