UNPKG

@modern-kit/utils

Version:
1 lines 2.59 kB
{"version":3,"file":"index.cjs","sources":["../../../src/math/min/index.ts"],"sourcesContent":["/**\n * @description 숫자 배열에서 최소값을 반환하는 함수\n *\n * @param {number[] | readonly number[]} arr - 숫자 배열\n * @returns {number} 최소값\n *\n * @example\n * min([1, 2, 3]); // 1\n */\nexport function min(arr: number[] | readonly number[]): number;\n\n/**\n * @description 배열에서 iteratee 함수를 기반으로 최소값을 가진 항목을 반환합니다.\n *\n * @template T - 배열 요소의 타입\n * @param {T[] | readonly T[]} arr - 배열\n * @param {(item: T) => number} iteratee - 배열 요소를 처리하는 함수\n * @returns {T} 최소값을 가진 항목\n *\n * @example\n * min([{ value: 1 }, { value: 2 }, { value: 3 }], (item) => item.value); // { value: 1 }\n */\nexport function min<T>(\n arr: T[] | readonly T[],\n iteratee: (item: T) => number\n): T;\n\n/**\n * @description 배열에서 최소값을 반환하는 함수\n *\n * iteratee 함수를 제공하는 경우 iteratee 함수를 기반으로 배열의 각 요소를 변환한 후 최소값을 가진 항목을 반환합니다.\n *\n * @template T - 배열 요소의 타입\n * @param {T[] | readonly T[]} arr - 객체 배열\n * @param {(item: T) => number} iteratee - 배열 요소를 처리하는 함수\n * @returns {T} 최소값을 가진 항목\n *\n * @example\n * min([1, 2, 3]); // 1\n *\n * @example\n * min([{ value: 1 }, { value: 2 }, { value: 3 }], (item) => item.value); // { value: 1 }\n */\nexport function min<T>(\n arr: T[] | readonly T[],\n iteratee?: (item: T) => number\n): T | number {\n let minValue = Number.MAX_SAFE_INTEGER;\n let minItem = arr[0];\n\n if (arr.length < 1) return minItem;\n\n if (!iteratee) {\n return Math.min(...(arr as number[]));\n }\n\n for (let i = 0; i < arr.length; i++) {\n const value = iteratee(arr[i]);\n\n if (value < minValue) {\n minItem = arr[i];\n minValue = value;\n }\n }\n\n return minItem;\n}\n"],"names":[],"mappings":";;AA2CO,SAAS,GAAA,CACd,KACA,QAAA,EACY;AACZ,EAAA,IAAI,WAAW,MAAA,CAAO,gBAAA;AACtB,EAAA,IAAI,OAAA,GAAU,IAAI,CAAC,CAAA;AAEnB,EAAA,IAAI,GAAA,CAAI,MAAA,GAAS,CAAA,EAAG,OAAO,OAAA;AAE3B,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,GAAI,GAAgB,CAAA;AAAA,EACtC;AAEA,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACnC,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,GAAA,CAAI,CAAC,CAAC,CAAA;AAE7B,IAAA,IAAI,QAAQ,QAAA,EAAU;AACpB,MAAA,OAAA,GAAU,IAAI,CAAC,CAAA;AACf,MAAA,QAAA,GAAW,KAAA;AAAA,IACb;AAAA,EACF;AAEA,EAAA,OAAO,OAAA;AACT;;;;"}