UNPKG

@modern-kit/utils

Version:
1 lines 1.66 kB
{"version":3,"file":"index.mjs","sources":["../../../src/array/chunk/index.ts"],"sourcesContent":["/**\n * @description 주어진 배열을 지정된 크기로 나눈 새로운 배열의 배열을 반환합니다.\n *\n * @template T - 배열 요소의 유형입니다.\n * @param {T[] | readonly T[]} arr - 요소들을 chunk 별로 나눌 배열입니다.\n * @param {number} size - chunk의 크기입니다.\n * @returns {T[][]} 주어진 배열을 지정된 size로 나눈 2차원 배열\n *\n * @example\n * chunk([1, 2, 3, 4, 5], 2)\n * // [[1, 2], [3, 4], [5]]\n *\n * chunk(['a', 'b', 'c', 'd'], 3)\n * // [['a', 'b', 'c'], ['d']]\n */\nexport function chunk<T>(arr: T[] | readonly T[], size: number): T[][] {\n if (!Number.isInteger(size) || size < 1) {\n throw new Error('Invalid size Value');\n }\n\n const chunkLength = Math.ceil(arr.length / size);\n const result: T[][] = new Array(chunkLength);\n\n for (let i = 0; i < chunkLength; i++) {\n const start = i * size;\n const end = start + size;\n\n result[i] = arr.slice(start, end);\n }\n\n return result;\n}\n"],"names":[],"mappings":"AAeO,SAAS,KAAA,CAAS,KAAyB,IAAA,EAAqB;AACrE,EAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,IAAI,CAAA,IAAK,OAAO,CAAA,EAAG;AACvC,IAAA,MAAM,IAAI,MAAM,oBAAoB,CAAA;AAAA,EACtC;AAEA,EAAA,MAAM,WAAA,GAAc,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,SAAS,IAAI,CAAA;AAC/C,EAAA,MAAM,MAAA,GAAgB,IAAI,KAAA,CAAM,WAAW,CAAA;AAE3C,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,WAAA,EAAa,CAAA,EAAA,EAAK;AACpC,IAAA,MAAM,QAAQ,CAAA,GAAI,IAAA;AAClB,IAAA,MAAM,MAAM,KAAA,GAAQ,IAAA;AAEpB,IAAA,MAAA,CAAO,CAAC,CAAA,GAAI,GAAA,CAAI,KAAA,CAAM,OAAO,GAAG,CAAA;AAAA,EAClC;AAEA,EAAA,OAAO,MAAA;AACT;;;;"}