簡體   English   中英

如何在 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]]

首先 Math.round(arr.length/2) 將返回 6 而不是 5。請參見下面的代碼。 我創建了 splitArr function ,它將根據給定的數字返回拆分數組。

 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)));

 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM