UNPKG

@modern-kit/utils

Version:
1 lines 2 kB
{"version":3,"file":"index.mjs","sources":["../../../src/array/swap/index.ts"],"sourcesContent":["/**\n * @description 배열 내의 두 요소의 위치를 교환합니다.\n *\n * 기본적으로 원본 배열을 직접 수정하지만, immutable 옵션을 통해\n * 새로운 배열을 반환하도록 설정할 수 있습니다.\n *\n * @template T - 배열 요소의 유형입니다.\n * @param {T[] | readonly T[]} arr - 요소를 교환할 대상 배열입니다.\n * @param {number} i - 교환할 첫 번째 요소의 인덱스입니다.\n * @param {number} j - 교환할 두 번째 요소의 인덱스입니다.\n * @param options - 추가 옵션을 포함하는 객체입니다.\n * @param {boolean} [options.immutable=false] - true일 경우, 원본 배열을 수정하지 않고 새 배열을 반환합니다.\n * @returns {T[]} 요소가 교환된 배열입니다. immutable이 false면 원본 배열, true면 새로운 배열입니다.\n *\n * @example\n * const arr = [1, 2, 3];\n * swap(arr, 0, 2); // [3, 2, 1]\n * console.log(arr); // [3, 2, 1] (원본 배열 유지)\n *\n * @example\n * const arr = [1, 2, 3];\n * const newArr = swap(arr, 0, 2, { immutable: true }); // [3, 2, 1]\n * console.log(arr); // [1, 2, 3] (원본 배열 유지)\n * console.log(newArr); // [3, 2, 1] (새로운 배열 반환)\n */\nexport function swap<T>(\n arr: T[] | readonly T[],\n i: number,\n j: number,\n options?: { immutable?: boolean }\n): T[] {\n const immutable = options?.immutable ?? false;\n const result = immutable ? [...arr] : (arr as T[]);\n \n [result[i], result[j]] = [result[j], result[i]];\n return result;\n}\n"],"names":[],"mappings":"AAyBO,SAAS,IAAA,CACd,GAAA,EACA,CAAA,EACA,CAAA,EACA,OAAA,EACK;AACL,EAAA,MAAM,SAAA,GAAY,SAAS,SAAA,IAAa,KAAA;AACxC,EAAA,MAAM,MAAA,GAAS,SAAA,GAAY,CAAC,GAAG,GAAG,CAAA,GAAK,GAAA;AAEvC,EAAA,CAAC,MAAA,CAAO,CAAC,CAAA,EAAG,MAAA,CAAO,CAAC,CAAC,CAAA,GAAI,CAAC,MAAA,CAAO,CAAC,CAAA,EAAG,MAAA,CAAO,CAAC,CAAC,CAAA;AAC9C,EAAA,OAAO,MAAA;AACT;;;;"}