{"ScriptPreparationCode":" const localeMap = {\r\n ko: \u0027ko-KR\u0027,\r\n en: \u0027en-US\u0027,\r\n zh: \u0027zh-CN\u0027,\r\n vi: \u0027vi-VN\u0027,\r\n ru: \u0027ru-RU\u0027,\r\n ja: \u0027ja-JP\u0027,\r\n uz: \u0027uz-UZ\u0027,\r\n th: \u0027th-TH\u0027,\r\n km: \u0027km-KH\u0027,\r\n id: \u0027id-ID\u0027\r\n };\r\n\r\n// toLocaleString \uAE30\uBC18 \uAD6C\uD604 (commaize-number.ts)\r\nfunction commaizeNumberLocale(value, locale = \u0027en\u0027) {\r\n const num = typeof value === \u0027string\u0027 ? parseFloat(value) : value;\r\n \r\n if (isNaN(num)) {\r\n return String(value);\r\n }\r\n\r\n return num.toLocaleString(localeMap[locale]);\r\n}\r\n\r\n// \uC815\uADDC\uC2DD \uAE30\uBC18 \uAD6C\uD604 (utils.ts)\r\nfunction commaizeNumberRegex(value) {\r\n const numStr = String(value);\r\n const decimalPointIndex = numStr.indexOf(\u0027.\u0027);\r\n const commaizeRegExp = /(\\d)(?=(\\d\\d\\d)\u002B(?!\\d))/g;\r\n\r\n return decimalPointIndex \u003E -1\r\n ? numStr.slice(0, decimalPointIndex).replace(commaizeRegExp, \u0027$1,\u0027) \u002B numStr.slice(decimalPointIndex)\r\n : numStr.replace(commaizeRegExp, \u0027$1,\u0027);\r\n}\r\n\r\n// \uD14C\uC2A4\uD2B8 \uB370\uC774\uD130 \uC900\uBE44\r\nconst testNumbers = [\r\n 1234,\r\n 123456,\r\n 123456789,\r\n 1234567890123,\r\n 1234.56,\r\n 123456.789,\r\n 0,\r\n -123456,\r\n 999999999999999,\r\n // \uADF9\uD55C \uCF00\uC774\uC2A4\r\n Number.MAX_SAFE_INTEGER,\r\n Math.PI * 1000000,\r\n // \uBB38\uC790\uC5F4 \uC785\uB825\r\n \u0022123456\u0022,\r\n \u0022999999.99\u0022\r\n];\r\n\r\nconst randomNumbers = [];\r\nfor (let i = 0; i \u003C 1000; i\u002B\u002B) {\r\n randomNumbers.push(Math.floor(Math.random() * 1000000000));\r\n}","TestCases":[{"Name":"Test Case 1: toLocaleString (\uC791\uC740 \uC22B\uC790)","Code":"for (let i = 0; i \u003C 100; i\u002B\u002B) {\r\n commaizeNumberLocale(1234);\r\n}","IsDeferred":false},{"Name":"Test Case 2: RegExp (\uC791\uC740 \uC22B\uC790)","Code":"for (let i = 0; i \u003C 100; i\u002B\u002B) {\r\n commaizeNumberRegex(1234);\r\n}","IsDeferred":false},{"Name":"Test Case 3: toLocaleString (\uD070 \uC22B\uC790)","Code":"for (let i = 0; i \u003C 100; i\u002B\u002B) {\r\n commaizeNumberLocale(123456789012345);\r\n}","IsDeferred":false},{"Name":"Test Case 4: RegExp (\uD070 \uC22B\uC790)","Code":"for (let i = 0; i \u003C 100; i\u002B\u002B) {\r\n commaizeNumberRegex(123456789012345);\r\n}","IsDeferred":false},{"Name":"Test Case 5: toLocaleString (\uC18C\uC218\uC810 \uD3EC\uD568)","Code":"for (let i = 0; i \u003C 100; i\u002B\u002B) {\r\n commaizeNumberLocale(123456.789);\r\n}","IsDeferred":false},{"Name":"Test Case 6: RegExp (\uC18C\uC218\uC810 \uD3EC\uD568)","Code":"for (let i = 0; i \u003C 100; i\u002B\u002B) {\r\n commaizeNumberRegex(123456.789);\r\n}","IsDeferred":false},{"Name":"Test Case 7: toLocaleString (\uD63C\uD569 \uB370\uC774\uD130)","Code":"for (let i = 0; i \u003C testNumbers.length; i\u002B\u002B) {\r\n commaizeNumberLocale(testNumbers[i]);\r\n}","IsDeferred":false},{"Name":"Test Case 8: RegExp (\uD63C\uD569 \uB370\uC774\uD130)","Code":"for (let i = 0; i \u003C testNumbers.length; i\u002B\u002B) {\r\n commaizeNumberRegex(testNumbers[i]);\r\n}","IsDeferred":false},{"Name":"Test Case 9: toLocaleString (\uB79C\uB364 \uB300\uB7C9 \uB370\uC774\uD130)","Code":"for (let i = 0; i \u003C randomNumbers.length; i\u002B\u002B) {\r\n commaizeNumberLocale(randomNumbers[i]);\r\n}","IsDeferred":false},{"Name":"Test Case 10: RegExp (\uB79C\uB364 \uB300\uB7C9 \uB370\uC774\uD130)","Code":"for (let i = 0; i \u003C randomNumbers.length; i\u002B\u002B) {\r\n commaizeNumberRegex(randomNumbers[i]);\r\n}","IsDeferred":false},{"Name":"Test Case 11: toLocaleString (\uBB38\uC790\uC5F4 \uC785\uB825)","Code":"for (let i = 0; i \u003C 100; i\u002B\u002B) {\r\n commaizeNumberLocale(\u0022123456.789\u0022);\r\n}","IsDeferred":false},{"Name":"Test Case 12: RegExp (\uBB38\uC790\uC5F4 \uC785\uB825)","Code":"for (let i = 0; i \u003C 100; i\u002B\u002B) {\r\n commaizeNumberRegex(\u0022123456.789\u0022);\r\n}","IsDeferred":false}]}