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'보다 앞에 옴)