JavaScript
JavaScript - localeCompare()
jjangsh
2024. 8. 12. 10:14
기본 형태
str1.localeCompare(str2, [locales], [options])
매개변수
- str1: 비교할 첫 번째 문자열. localeCompare는 이 문자열을 기준으로 비교합니다.
- str2: 비교할 두 번째 문자열.
- locales (선택 사항): 비교에 사용할 로케일을 지정합니다. 예를 들어 'en'은 영어, 'ko'는 한국어를 의미합니다. 이 값을 undefined로 설정하면 브라우저의 기본 로케일을 사용합니다.
- options (선택 사항): 비교 방식을 세부 조정하는 옵션 객체입니다. 주요 옵션은 다음과 같습니다:
- sensitivity: 대소문자, 악센트 등을 얼마나 민감하게 비교할지를 결정합니다. 값으로는 'base', 'accent', 'case', 'variant' 등이 있습니다.
- ignorePunctuation: true로 설정하면 구두점을 무시합니다.
- numeric: true로 설정하면 "1"과 "2"를 숫자처럼 비교합니다.
- caseFirst: 대소문자 순서를 설정합니다. 'upper'는 대문자가 앞서도록, 'lower'는 소문자가 앞서도록 설정합니다.
반환값
localeCompare는 다음의 세 가지 값을 반환할 수 있습니다:
- -1: str1이 str2보다 앞에 있는 경우.
- 1: str1이 str2보다 뒤에 있는 경우.
- 0: 두 문자열이 동일한 경우.
예시
console.log('apple'.localeCompare('banana')); // -1 (apple이 banana보다 앞에 있음)
console.log('apple'.localeCompare('apple')); // 0 (두 문자열이 동일함)
console.log('banana'.localeCompare('apple')); // 1 (banana가 apple보다 뒤에 있음)
// 기본 로케일로 비교
console.log('ä'.localeCompare('z')); // 로케일에 따라 결과가 달라질 수 있음
// 특정 로케일과 옵션 사용
console.log('ä'.localeCompare('z', 'de', { sensitivity: 'base' })); // -1 (독일어에서는 'ä'가 'z'보다 앞에 옴)
// 대문자를 소문자보다 먼저 오도록 설정
console.log('a'.localeCompare('A', undefined, { caseFirst: 'upper' })); // 1 ('A'가 'a'보다 앞에 옴)