
๐ก ๋ฌธ์์ด์ ๋น๊ตํด์ ์ ๋ ฌ ๊ธฐ์ค์ ์ ํ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋์ด๋ค.
ํนํ, ๋ค๊ตญ์ด ํ๊ฒฝ์ด๋ ์ฌ์ ์ ์ ๋ ฌ์ด ํ์ํ ๊ฒฝ์ฐ ๋งค์ฐ ์ ์ฉํ๋ค.
referenceString.localeCompare(compareString, [locales], [options])
localeCompare() ๋ฉ์๋๋ ๋ ๊ฐ์ ๋ฌธ์์ด์ ๋น๊ตํ์ฌ ๋ค์๊ณผ ๊ฐ์ ์ธ ๊ฐ์ง ๊ฐ ์ค ํ๋๋ฅผ ๋ฐํํจ
| ๋ฐํ๊ฐ | ์๋ฏธ |
|---|---|
| ์์ | ์ฐธ์กฐ ๋ฌธ์์ด(๋ฉ์๋๋ฅผ ํธ์ถํ ๋ฌธ์์ด)์ด ๋น๊ต ๋ฌธ์์ด๋ณด๋ค ์์ ์ฌ ๊ฒฝ์ฐ |
| 0 | ๋ ๋ฌธ์์ด์ด ๋์ผํ ๊ฒฝ์ฐ |
| ์์ | ์ฐธ์กฐ ๋ฌธ์์ด์ด ๋น๊ต ๋ฌธ์์ด๋ณด๋ค ๋ค์ ์ฌ ๊ฒฝ์ฐ |
referenceString
compareString
referenceString๊ณผ ๋น๊ตํ ๋ฌธ์์ดlocales(์ ํ ์ฌํญ)
'en-US', 'ko-KR', ['en-US', 'ko-KR']options(์ ํ ์ฌํญ)
๋น๊ต ๋์์ ์ฌ์ฉ์ ์ ์ํ ์ ์๋ ์์ฑ๋ค์ ํฌํจํ๋ ๊ฐ์ฒด
| ์ต์ ๋ช | ์ค๋ช |
|---|---|
| sensitivity | ๋ฌธ์์ด ๋น๊ต์ ๋ฏผ๊ฐ๋๋ฅผ ์ค์ |
| numeric | ์ซ์ ๋ฌธ์์ด์ ์ซ์์ฒ๋ผ ๋น๊ตํ ์ง ์ฌ๋ถ๋ฅผ ์ค์ |
| caseFirst | ๋์๋ฌธ์ ์ ๋ ฌ ์ฐ์ ์์ ์ค์ |
sensitivity
| ๊ฐ | ๋น๊ต ๋ฐฉ์ | ์์ |
|---|---|---|
| 'base' | ๊ธฐ๋ณธ ๊ธ์๋ง ๋น๊ตํจ | 'a' === 'A' |
| 'accent' | ๊ธฐ๋ณธ ๊ธ์์ ์ ์ผํธ ๋งํฌ๊น์ง ๋น๊ตํจ | 'a' !== 'รก' |
| 'case' | ๊ธฐ๋ณธ ๊ธ์์ ๋์๋ฌธ์๊น์ง ๋น๊ตํจ | 'a' !== 'A' |
| 'variant' | ๋ชจ๋ ์ฐจ์ด์ ์ ๋น๊ตํจ(๊ฐ์ฅ ์๊ฒฉ) |
numeric
| ๊ฐ | ๋น๊ต ๋ฐฉ์ |
|---|---|
| true | ์ซ์ ๋ฌธ์์ด์ ์ซ์์ฒ๋ผ ๋น๊ตํจ |
| false | ์ซ์ ๋ฌธ์์ด์ ์ซ์์ฒ๋ผ ๋น๊ตํ์ง ์์ |
caseFirst
| ๊ฐ | ๋น๊ต ๋ฐฉ์ |
|---|---|
| 'upper' | ๋๋ฌธ์๊ฐ ์๋ฌธ์๋ณด๋ค ๋จผ์ ์ด |
| 'lower' | ์๋ฌธ์๊ฐ ๋๋ฌธ์๋ณด๋ค ๋จผ์ ์ด |
| 'false' | locale ๊ธฐ๋ณธ๊ฐ์ ๋ฐ๋ฆ |
const str1 = '๊ฐ๋๋ค';
const str2 = '๋๋ค๋ผ';
const str3 = '๊ฐ๋๋ค';
const str4 = '๊ฐ๊ฐ๋ค';
console.log(str1.localeCompare(str2, 'ko-KR')); // ์์ ('๊ฐ๋๋ค'๊ฐ '๋๋ค๋ผ'๋ณด๋ค ์์ ์ด)
console.log(str2.localeCompare(str1, 'ko-KR')); // ์์ ('๋๋ค๋ผ'๊ฐ '๊ฐ๋๋ค'๋ณด๋ค ๋ค์ ์ด)
console.log(str1.localeCompare(str3, 'ko-KR')); // 0 (๋ ๋ฌธ์์ด์ด ๊ฐ์)
console.log(str1.localeCompare(str4, 'ko-KR')); // ์์ ('๊ฐ๋๋ค'๊ฐ '๊ฐ๊ฐ๋ค'๋ณด๋ค ๋ค์ ์ด)
const fruits = ['๋ฐ๋๋', '์ฌ๊ณผ', '์ ํ', 'Banana', 'apple', 'Orange', '์ค๋ ์ง'];
// ๊ธฐ๋ณธ sort() (์ ๋์ฝ๋ ๊ฐ ๊ธฐ์ค)
console.log('๊ธฐ๋ณธ sort():', fruits.sort());
// ๊ฒฐ๊ณผ๋ ์์๊ณผ ๋ค๋ฅผ ์ ์์ต๋๋ค. (์: 'Apple' ๋ค์์ 'Banana'๊ฐ ์ค๊ณ , ํ๊ธ๊ณผ ์์ด๊ฐ ์์ผ ์ ์์)
// [ 'Apple', 'Banana', 'Orange', 'apple', '๋ฐ๋๋', '์ฌ๊ณผ', '์ ํ', '์ค๋ ์ง' ] ์ ๋น์ทํ๊ฒ ๋์ฌ ์ ์์ต๋๋ค. (์ ํํ ์์๋ ํ๊ฒฝ๋ง๋ค ๋ค๋ฅผ ์ ์์)
// localeCompare()๋ฅผ ์ด์ฉํ ํ๊ธ, ์์ด ํผํฉ ์ ๋ ฌ (ํ๊ตญ์ด ๋ก์ผ์ผ)
fruits.sort((a, b) => a.localeCompare(b, 'ko-KR', { sensitivity: 'base' }));
console.log('localeCompare() ์ ๋ ฌ (ko-KR):', fruits);
// ์์ ๊ฒฐ๊ณผ: [ '๋ฐ๋๋', '์ฌ๊ณผ', '์ ํ', '์ค๋ ์ง', 'apple', 'Banana', 'Orange' ] (ํ๊ธ์ด ๋จผ์ , ๊ทธ ๋ค์ ์์ด๊ฐ ์ฌ์ ์์ผ๋ก ์ ๋ ฌ๋ ํ๋ฅ ์ด ๋์)
// ์์ด ๋ก์ผ์ผ๋ก ์ ๋ ฌ (๋์๋ฌธ์ ๊ตฌ๋ถ ์์ด)
fruits.sort((a, b) => a.localeCompare(b, 'en-US', { sensitivity: 'base' }));
console.log('localeCompare() ์ ๋ ฌ (en-US, base):', fruits);
// ์์ ๊ฒฐ๊ณผ: [ 'apple', 'Apple', 'Banana', 'Orange', ... ] (๋์๋ฌธ์ ๊ตฌ๋ถ ์์ด ์ํ๋ฒณ ์)
// ์์ด ๋ก์ผ์ผ๋ก ์ ๋ ฌ (๋์๋ฌธ์ ๊ตฌ๋ถ)
fruits.sort((a, b) => a.localeCompare(b, 'en-US', { sensitivity: 'case' }));
console.log('localeCompare() ์ ๋ ฌ (en-US, case):', fruits);
// ์์ ๊ฒฐ๊ณผ: [ 'Apple', 'apple', 'Banana', 'Orange', ... ] (๋๋ฌธ์๊ฐ ์๋ฌธ์๋ณด๋ค ๋จผ์ )
numerice ์ต์
์ ์ฌ์ฉํด์ ๋ฌธ์์ด ํํ์ ์ซ์๋ ์ ๋ ฌ ๊ฐ๋ฅํจ
const versions = ['v10', 'v2', 'v1'];
versions.sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));
console.log('์ซ์ ๋ฌธ์์ด ์ ๋ ฌ:', versions);
// ์์ ๊ฒฐ๊ณผ: [ 'v1', 'v2', 'v10' ]
localeCompare()๋ ๋ค๊ตญ์ด ๋ฌธ์์ด ์ ๋ ฌ์์ ํ์์ ์ธ ๋๊ตฌ์ด๋ค.sort()๋ก๋ ํด๊ฒฐ๋์ง ์๋ ์ ๋ ฌ ๋ฌธ์ ์ ์ ์ฉํ๋ค.