Разделить группу Массив элементов в N групп

Я хочу разбить массив чисел на группы N, которые нужно упорядочить из более крупных групп.

Например, в приведенном ниже коде разбивайте массив из 12 чисел в массивы 5, и результат должен быть разделен поровну от больших (групп) до малых:

[1,2,3] [4,5,6] [7,8] [9,10] [11,12]

Игровая площадка

// set up known variables
var arr = [1,2,3,4,5,6,7,8,9,10,11,12],
    numberOfGroups = 5,
    groups = [];

// split array into groups of arrays
for(i=0; i<arr.length; i++) {
  var groupIdx = Math.floor( i/(arr.length/numberOfGroups) );
  
  // if group array isn't defined, create it
  if( !groups[groupIdx] ) 
    groups[groupIdx] = [];
  // add arr value to group
  groups[groupIdx].push( arr[i] )
  
}

// Print result
console.log( "data: ", arr );
console.log( "groups: ", groups )

Ответ 1

Я не уверен на 100%, как это должно работать на массивах разных размеров с разным количеством групп, но это работает для вашего 12-значного примера:

function chunkArray(arr, chunkCount) {
  const chunks = [];
  while(arr.length) {
    const chunkSize = Math.ceil(arr.length / chunkCount--);
    const chunk = arr.slice(0, chunkSize);
    chunks.push(chunk);
    arr = arr.slice(chunkSize);
  }
  return chunks;
}



var arr = [1,2,3,4,5,6,7,8,9,10,11,12];
console.log( chunkArray(arr, 5) )