UNPKG

@modern-kit/utils

Version:
1 lines 2.02 kB
{"version":3,"file":"index.mjs","sources":["../../../src/array/zip/index.ts"],"sourcesContent":["/**\n * @description 여러 배열을 결합하여 튜플 형태의 배열을 반환합니다.\n *\n * 입력 배열들의 길이가 서로 다르다면, 결과 배열은 가장 긴 입력 배열의 길이를 가집니다.\n *\n * 누락된 요소에 대해서는 undefined 값이 사용됩니다.\n *\n * @template T - 결합할 배열들의 타입을 나타내는 제네릭 타입입니다.\n * @param {T} arrs - 결합할 배열들입니다.\n * @returns {Array<{ [K in keyof T]: T[K] extends (infer U)[] ? U : never }>} 결합된 배열을 반환합니다.\n *\n * @example\n * const arr1 = [1, 2, 3];\n * const arr2 = ['a', 'b', 'c'];\n * const arr3 = [true, false, true];\n * const arr4 = [null, null];\n *\n * zip(arr1); // [[1], [2], [3]]\n * zip(arr1, arr2); // [[1, 'a'], [2, 'b'], [3, 'c']]\n * zip(arr1, arr2, arr3); // [[1, 'a', true], [2, 'b', false], [3, 'c', true]]\n * zip(arr1, arr2, arr3, arr4); // [[1, 'a', true, null], [2, 'b', false, null], [3, 'c', true, undefined]]\n */\n\nexport function zip<T extends (readonly unknown[])[]>(\n ...arrs: T\n): Array<{\n [K in keyof T]: T[K] extends (infer U)[] ? U : never;\n}> {\n let maxLength = 0;\n\n for (let i = 0; i < arrs.length; i++) {\n maxLength = Math.max(maxLength, arrs[i].length);\n }\n\n const result = Array(maxLength);\n\n for (let i = 0; i < maxLength; i++) {\n result[i] = arrs.map((arr) => arr[i]);\n }\n\n return result;\n}\n"],"names":[],"mappings":"AAuBO,SAAS,OACX,IAAA,EAGF;AACD,EAAA,IAAI,SAAA,GAAY,CAAA;AAEhB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACpC,IAAA,SAAA,GAAY,KAAK,GAAA,CAAI,SAAA,EAAW,IAAA,CAAK,CAAC,EAAE,MAAM,CAAA;AAAA,EAChD;AAEA,EAAA,MAAM,MAAA,GAAS,MAAM,SAAS,CAAA;AAE9B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,EAAW,CAAA,EAAA,EAAK;AAClC,IAAA,MAAA,CAAO,CAAC,IAAI,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAQ,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,EACtC;AAEA,EAAA,OAAO,MAAA;AACT;;;;"}