UNPKG

@modern-kit/utils

Version:
1 lines 3.14 kB
{"version":3,"file":"index.cjs","sources":["../../../src/math/subtract/index.ts"],"sourcesContent":["/**\n * @description 숫자 배열의 요소들을 순차적으로 뺄셈하는 함수\n *\n * @param {number[] | readonly number[]} arr - 숫자 배열\n * @returns {number} 배열의 모든 숫자를 순차적으로 뺀 결과\n *\n * @example\n * subtract([10, 2, 3]); // 5 (10 - 2 - 3)\n */\nexport function subtract(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 {number} 배열의 모든 숫자를 순차적으로 뺀 결과\n *\n * @example\n * subtract([{ value: 10 }, { value: 2 }, { value: 3 }], (item) => item.value); // 5 (10 - 2 - 3)\n */\nexport function subtract<T>(\n arr: T[] | readonly T[],\n iteratee: (item: T) => number\n): number;\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 {number} 배열의 모든 숫자를 순차적으로 뺀 결과\n *\n * @example\n * subtract([10, 2, 3]); // 5 (10 - 2 - 3)\n *\n * @example\n * subtract([{ value: 10 }, { value: 2 }, { value: 3 }], (item) => item.value); // 5 (10 - 2 - 3)\n */\nexport function subtract<T>(\n arr: T[] | readonly T[],\n iteratee?: (item: T) => number\n): number {\n if (arr.length === 0) return 0;\n\n const [first, ...rest] = arr;\n\n const calculateSubtract = () => {\n let acc = first as number;\n for (let i = 0; i < rest.length; i++) {\n acc -= rest[i] as number;\n }\n return acc;\n };\n\n const calculateSubtractWithIteratee = (iteratee: (item: T) => number) => {\n let acc = iteratee(first);\n for (let i = 0; i < rest.length; i++) {\n acc -= iteratee(rest[i]);\n }\n return acc;\n };\n\n return iteratee\n ? calculateSubtractWithIteratee(iteratee)\n : calculateSubtract();\n}\n"],"names":["iteratee"],"mappings":";;AA2CO,SAAS,QAAA,CACd,KACA,QAAA,EACQ;AACR,EAAA,IAAI,GAAA,CAAI,MAAA,KAAW,CAAA,EAAG,OAAO,CAAA;AAE7B,EAAA,MAAM,CAAC,KAAA,EAAO,GAAG,IAAI,CAAA,GAAI,GAAA;AAEzB,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAA,IAAI,GAAA,GAAM,KAAA;AACV,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACpC,MAAA,GAAA,IAAO,KAAK,CAAC,CAAA;AAAA,IACf;AACA,IAAA,OAAO,GAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,6BAAA,GAAgC,CAACA,SAAAA,KAAkC;AACvE,IAAA,IAAI,GAAA,GAAMA,UAAS,KAAK,CAAA;AACxB,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACpC,MAAA,GAAA,IAAOA,SAAAA,CAAS,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA,IACzB;AACA,IAAA,OAAO,GAAA;AAAA,EACT,CAAA;AAEA,EAAA,OAAO,QAAA,GACH,6BAAA,CAA8B,QAAQ,CAAA,GACtC,iBAAA,EAAkB;AACxB;;;;"}