@lodestar/beacon-node
Version:
A Typescript implementation of the beacon chain
20 lines (16 loc) • 529 B
text/typescript
/**
* Splits an array into an array of arrays maximizing the size of the smallest chunk.
*/
export function chunkifyMaximizeChunkSize<T>(arr: T[], minPerChunk: number): T[][] {
const chunkCount = Math.floor(arr.length / minPerChunk);
if (chunkCount <= 1) {
return [arr];
}
// Prefer less chunks of bigger size
const perChunk = Math.ceil(arr.length / chunkCount);
const arrArr: T[][] = [];
for (let i = 0; i < arr.length; i += perChunk) {
arrArr.push(arr.slice(i, i + perChunk));
}
return arrArr;
}