如何将数组拆分为 javascript 中的给定数字
how to split array into given number in javascript
我有一个数组,我必须将它拆分成给定的数字,如果(剩余数组大小 < given_no/2)
,最后拆分的数组应容纳剩余元素
例如
var arr = [1,2,3,4,5,6,7,8,9,10,11]
if given_no 2 = Math.round(arr.length/2)= chunk_size 6 = [[1,2,3,4,5,6],[6,7,8,9,10]]
if given_no 3 = Math.round(arr.length/3)= chunk_size 4 = [[1,2,3,4],[5,6,7,8],[9,10,11]]
if given_no 4 = Math.round(arr.length/4)= chunk_size 3 = [[1,2,3],[4,5,6],[7,8,9],[10,11]]
function splitintochunks(arr,l){
let result=[];
while(arr.length>0){
result.push(arr.splice(0,l));
}
return result;
}
//EXAMPLE: call in the below way spltIntoChunks([1,2,3,4,5,6,7,8,9,10,11],5);
首先 Math.round(arr.length/2) 会 return 6 而不是 5。
请看下面的代码。我创建了 splitArr 函数,它将 return 根据给定的数字拆分数组。
var arr = [1,2,3,4,5,6,7,8,9,10,11];
console.log('Given 2: ' + JSON.stringify(splitArr(arr, 2))); // given 2
console.log('Given 3: ' + JSON.stringify(splitArr(arr, 3))); // given 3
console.log('Given 4: ' + JSON.stringify(splitArr(arr, 4))); // given 4
console.log('Given 5: ' + JSON.stringify(splitArr(arr, 5))); // given 5
console.log('Given 6: ' + JSON.stringify(splitArr(arr, 6))); // given 6
function splitArr(arr, given) {
var arrSize = arr.length
var split = Math.round(arrSize/given);
var returnArr = [];
var loopCount;
for(i = 0; i < given; i++){
loopCount = (i*split)+split;
loopCount = loopCount > arrSize ? arrSize : loopCount;
var innerArr = arr.slice((i*split), loopCount)
returnArr.push(innerArr);
}
if(loopCount < arr.length){
innerArr.push(...arr.slice(loopCount, arrSize));
}
return returnArr;
}
您可以使用 Math.round()
和 array.slice()
。
var splitArray = (arr, num) => {
let result = [];
let size = Math.round(arr.length/num);
for (let i=0; i<num; i++) {
let end = i === num-1 ? arr.length : (i+1) * size;
result.push(arr.slice(i*size, end));
}
return result;
}
var arr = [1,2,3,4,5,6,7,8,9,10,11];
console.log(JSON.stringify(splitArray(arr, 2)));
console.log(JSON.stringify(splitArray(arr, 3)));
console.log(JSON.stringify(splitArray(arr, 4)));
console.log(JSON.stringify(splitArray(arr, 5)));
我有一个数组,我必须将它拆分成给定的数字,如果(剩余数组大小 < given_no/2)
,最后拆分的数组应容纳剩余元素例如
var arr = [1,2,3,4,5,6,7,8,9,10,11]
if given_no 2 = Math.round(arr.length/2)= chunk_size 6 = [[1,2,3,4,5,6],[6,7,8,9,10]]
if given_no 3 = Math.round(arr.length/3)= chunk_size 4 = [[1,2,3,4],[5,6,7,8],[9,10,11]]
if given_no 4 = Math.round(arr.length/4)= chunk_size 3 = [[1,2,3],[4,5,6],[7,8,9],[10,11]]
function splitintochunks(arr,l){
let result=[];
while(arr.length>0){
result.push(arr.splice(0,l));
}
return result;
}
//EXAMPLE: call in the below way spltIntoChunks([1,2,3,4,5,6,7,8,9,10,11],5);
首先 Math.round(arr.length/2) 会 return 6 而不是 5。 请看下面的代码。我创建了 splitArr 函数,它将 return 根据给定的数字拆分数组。
var arr = [1,2,3,4,5,6,7,8,9,10,11];
console.log('Given 2: ' + JSON.stringify(splitArr(arr, 2))); // given 2
console.log('Given 3: ' + JSON.stringify(splitArr(arr, 3))); // given 3
console.log('Given 4: ' + JSON.stringify(splitArr(arr, 4))); // given 4
console.log('Given 5: ' + JSON.stringify(splitArr(arr, 5))); // given 5
console.log('Given 6: ' + JSON.stringify(splitArr(arr, 6))); // given 6
function splitArr(arr, given) {
var arrSize = arr.length
var split = Math.round(arrSize/given);
var returnArr = [];
var loopCount;
for(i = 0; i < given; i++){
loopCount = (i*split)+split;
loopCount = loopCount > arrSize ? arrSize : loopCount;
var innerArr = arr.slice((i*split), loopCount)
returnArr.push(innerArr);
}
if(loopCount < arr.length){
innerArr.push(...arr.slice(loopCount, arrSize));
}
return returnArr;
}
您可以使用 Math.round()
和 array.slice()
。
var splitArray = (arr, num) => {
let result = [];
let size = Math.round(arr.length/num);
for (let i=0; i<num; i++) {
let end = i === num-1 ? arr.length : (i+1) * size;
result.push(arr.slice(i*size, end));
}
return result;
}
var arr = [1,2,3,4,5,6,7,8,9,10,11];
console.log(JSON.stringify(splitArray(arr, 2)));
console.log(JSON.stringify(splitArray(arr, 3)));
console.log(JSON.stringify(splitArray(arr, 4)));
console.log(JSON.stringify(splitArray(arr, 5)));