UNPKG

@modern-kit/utils

Version:
1 lines 3.22 kB
{"version":3,"file":"index.mjs","sources":["../../../src/array/xor/index.ts"],"sourcesContent":["import { union } from '../union';\nimport { difference } from '../difference';\nimport { intersection } from '../intersection';\n\n/**\n * @description 두 배열 간의 대칭 차집합(XOR)를 계산하는 함수입니다.\n * 결과는 두 배열 중 하나에만 존재하는 요소들로 구성됩니다.\n *\n * @template T - 배열 요소의 유형입니다.\n * @param {T[] | readonly T[]} arr1 - 첫 번째 입력 배열입니다.\n * @param {T[] | readonly T[]} arr2 - 두 번째 입력 배열입니다.\n *\n * @returns {T[]} 두 배열의 대칭 차집합(XOR)을 포함하는 새 배열을 반환합니다.\n *\n * @example\n * xor([1, 2], [2, 3]); // [1, 3]\n */\nexport function xor<T>(arr1: T[] | readonly T[], arr2: T[] | readonly T[]): T[];\n\n/**\n * @description 두 배열 간의 각 요소에 iteratee 함수를 적용한 후 대칭 차집합(XOR)을 계산하는 함수입니다.\n * 결과는 두 배열 중 하나에만 존재하는 요소들로 구성됩니다.\n *\n * @template T - 배열 요소의 유형입니다.\n * @template U - iteratee 함수의 반환값 유형입니다.\n * @param {T[] | readonly T[]} arr1 - 첫 번째 입력 배열입니다.\n * @param {T[] | readonly T[]} arr2 - 두 번째 입력 배열입니다.\n * @param {(item: T) => U} iteratee - 선택적 반복자 함수입니다.\n *\n * @returns {T[]} 두 배열의 대칭 차집합(XOR)을 포함하는 새 배열을 반환합니다.\n *\n * @example\n * xor([{ id: 1 }, { id: 2 }], [{ id: 2 }, { id: 3 }], (x) => x.id);\n * // [{ id: 1 }, { id: 3 }]\n */\nexport function xor<T, U>(\n arr1: T[] | readonly T[],\n arr2: T[] | readonly T[],\n iteratee: (item: T) => U\n): T[];\n\n/**\n * @description 두 배열 간의 대칭 차이(XOR)를 계산하는 함수입니다.\n * 결과는 두 배열 중 하나에만 존재하는 요소들로 구성됩니다.\n *\n * iteratee 함수를 제공하는 경우 iteratee 함수를 기반으로 배열의 각 요소를 변환한 후 대칭 차집합(XOR)을 계산합니다.\n *\n * @template T - 배열 요소의 유형입니다.\n * @template U - iteratee 함수의 반환값 유형입니다.\n * @param {T[] | readonly T[]} arr1 - 첫 번째 입력 배열입니다.\n * @param {T[] | readonly T[]} arr2 - 두 번째 입력 배열입니다.\n * @param {(item: T) => U} iteratee - 선택적 반복자 함수입니다.\n *\n * @returns {T[]} 두 배열의 대칭 차집합(XOR)을 포함하는 새 배열을 반환합니다.\n *\n * @example\n * xor([1, 2], [2, 3]); // [1, 3]\n *\n * @example\n * xor([{ id: 1 }, { id: 2 }], [{ id: 2 }, { id: 3 }], (x) => x.id);\n * // [{ id: 1 }, { id: 3 }]\n */\nexport function xor<T, U>(\n arr1: T[] | readonly T[],\n arr2: T[] | readonly T[],\n iteratee?: (item: T) => U\n): T[] {\n return difference(\n union(arr1, arr2, iteratee),\n intersection(arr1, arr2, iteratee),\n iteratee\n );\n}\n"],"names":[],"mappings":";;;;;AA8DO,SAAS,GAAA,CACd,IAAA,EACA,IAAA,EACA,QAAA,EACK;AACL,EAAA,OAAO,UAAA;AAAA,IACL,KAAA,CAAM,IAAA,EAAM,IAAA,EAAM,QAAQ,CAAA;AAAA,IAC1B,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,QAAQ,CAAA;AAAA,IACjC;AAAA,GACF;AACF;;;;"}