arrayChunk.ts 512 B

123456789101112131415161718192021222324252627282930
  1. /**
  2. * ```js
  3. * arrayChunk( [ 1, 2, 3, 4, 5, 6 ], 2 )
  4. * // will be
  5. * [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ]
  6. * ```
  7. */
  8. export function arrayChunk<T>(array: ArrayLike<T>, every: number): T[][] {
  9. const N = array.length;
  10. const ret: T[][] = [];
  11. let current: T[] = [];
  12. let remaining = 0;
  13. for (let i = 0; i < N; i ++) {
  14. const el = array[i];
  15. if (remaining <= 0) {
  16. remaining = every;
  17. current = [];
  18. ret.push(current);
  19. }
  20. current.push(el);
  21. remaining--;
  22. }
  23. return ret;
  24. }