UNPKG

@modern-kit/utils

Version:
1 lines 4.16 kB
{"version":3,"file":"index.cjs","sources":["../../../src/common/range/index.ts"],"sourcesContent":["import { isNil } from '../../validator/isNil';\n\nfunction getRangeValues(\n start: number,\n end: number,\n step: number = 1\n): number[] {\n const isAscending = end >= start;\n const directedStep = isAscending ? step : -step;\n const length = Math.max(Math.ceil((end - start) / directedStep), 0);\n const result = new Array(length);\n\n for (let i = 0; i < result.length; i++) {\n result[i] = start + directedStep * i;\n }\n\n return result;\n}\n\n/**\n * @description 0부터 종료 값(end)까지의 1씩 증가하는 숫자 배열을 생성합니다.\n *\n * @param {number} end - 생성할 숫자 범위의 종료 값입니다.\n * @returns {number[]} 0부터 종료 값까지 1씩 증가하는 숫자의 배열을 반환합니다.\n *\n * @example\n * range(5); // [0, 1, 2, 3, 4]\n */\nexport function range(end: number): number[];\n\n/**\n * @description 시작 값(start)에서 종료 값(end)까지의 1씩 증가하는 숫자 배열을 생성합니다.\n *\n * @param {number} start - 생성할 숫자 범위의 시작 값입니다.\n * @param {number} end - 생성할 숫자 범위의 종료 값입니다.\n * @returns {number[]} 시작 값에서 종료 값까지 1씩 증가하는 숫자의 배열을 반환합니다.\n *\n * @example\n * range(1, 5); // [1, 2, 3, 4]\n */\nexport function range(start: number, end: number): number[];\n\n/**\n * @description 시작 값(start)에서 종료 값(end)까지 주어진 간격(step)에 따라 숫자의 배열을 생성합니다.\n *\n * @param {number} start - 생성할 숫자 범위의 시작 값입니다.\n * @param {number} end - 생성할 숫자 범위의 종료 값입니다.\n * @param {number} step - 숫자의 증가 간격입니다. 1 이상의 정수여야 합니다.\n * @returns {number[]} 시작 값에서 종료 값까지 간격에 따라 생성된 숫자의 배열을 반환합니다.\n *\n * @throws {Error} `step`이 1 이상의 정수가 아닐 경우 에러를 발생시킵니다.\n *\n * @example\n * range(1, 10, 2); // [1, 3, 5, 7, 9]\n */\nexport function range(start: number, end: number, step: number): number[];\n\n/**\n * @description 시작 값(start)에서 종료 값(end)까지 주어진 간격(step)에 따라 숫자의 배열을 생성합니다.\n *\n * @param {number} start - 생성할 숫자 범위의 시작 값입니다.\n * @param {number} end - 생성할 숫자 범위의 종료 값입니다.\n * @param {number} step - 숫자의 증가 간격입니다. 1 이상의 정수여야 합니다.\n * @returns {number[]} 시작 값에서 종료 값까지 간격에 따라 생성된 숫자의 배열을 반환합니다.\n *\n * @throws {Error} `step`이 1 이상의 정수가 아닐 경우 에러를 발생시킵니다.\n *\n * @example\n * range(5); // [0, 1, 2, 3, 4]\n *\n * @example\n * range(1, 5); // [1, 2, 3, 4]\n *\n * @example\n * range(1, 10, 2); // [1, 3, 5, 7, 9]\n */\nexport function range(start: number, end?: number, step: number = 1): number[] {\n if (isNil(end)) {\n return getRangeValues(0, start);\n }\n\n if (!Number.isInteger(step) || step < 1) {\n throw new Error('step은 1 이상의 정수여야 합니다.');\n }\n\n return getRangeValues(start, end, step);\n}\n"],"names":["isNil"],"mappings":";;;;AAEA,SAAS,cAAA,CACP,KAAA,EACA,GAAA,EACA,IAAA,GAAe,CAAA,EACL;AACV,EAAA,MAAM,cAAc,GAAA,IAAO,KAAA;AAC3B,EAAA,MAAM,YAAA,GAAe,WAAA,GAAc,IAAA,GAAO,CAAC,IAAA;AAC3C,EAAA,MAAM,MAAA,GAAS,KAAK,GAAA,CAAI,IAAA,CAAK,MAAM,GAAA,GAAM,KAAA,IAAS,YAAY,CAAA,EAAG,CAAC,CAAA;AAClE,EAAA,MAAM,MAAA,GAAS,IAAI,KAAA,CAAM,MAAM,CAAA;AAE/B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,IAAA,MAAA,CAAO,CAAC,CAAA,GAAI,KAAA,GAAQ,YAAA,GAAe,CAAA;AAAA,EACrC;AAEA,EAAA,OAAO,MAAA;AACT;AA2DO,SAAS,KAAA,CAAM,KAAA,EAAe,GAAA,EAAc,IAAA,GAAe,CAAA,EAAa;AAC7E,EAAA,IAAIA,oBAAA,CAAM,GAAG,CAAA,EAAG;AACd,IAAA,OAAO,cAAA,CAAe,GAAG,KAAK,CAAA;AAAA,EAChC;AAEA,EAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,IAAI,CAAA,IAAK,OAAO,CAAA,EAAG;AACvC,IAAA,MAAM,IAAI,MAAM,8EAAuB,CAAA;AAAA,EACzC;AAEA,EAAA,OAAO,cAAA,CAAe,KAAA,EAAO,GAAA,EAAK,IAAI,CAAA;AACxC;;;;"}