javascript localeCompare 함수 설명

localeCompare()는 JavaScript의 String 객체에서 제공하는 메서드로, 두 문자열을 로케일에 맞게 비교하는 기능을 합니다.

✅ 기본 문법

string1.localeCompare(string2, [locales], [options])

🔹 매개변수

  1. string2 (필수): 비교 대상이 되는 문자열
  2. locales (선택): 특정 언어 및 로케일(예: 'en-US', 'ko-KR')
  3. options (선택): 비교 방식을 지정하는 옵션 객체
    • sensitivity: 대소문자 및 악센트 구분 방식 설정 ("base", "accent", "case", "variant")
    • numeric: 숫자를 올바르게 비교 (true 설정 시 "2""10"보다 작음)

🔹 반환 값

  • -1string1string2보다 앞에 위치
  • → 두 문자열이 동일
  • 1string1string2보다 뒤에 위치

✅ 사용 예제

1️⃣ 기본 비교

console.log("apple".localeCompare("banana")); // -1 (앞에 위치)
console.log("grape".localeCompare("apple"));  // 1 (뒤에 위치)
console.log("orange".localeCompare("orange")); // 0 (같음)

2️⃣ 로케일을 지정한 비교 (ko-KR)

console.log("가".localeCompare("나", "ko-KR")); // -1 ('가'가 '나'보다 앞)
console.log("다".localeCompare("나", "ko-KR")); // 1 ('다'가 '나'보다 뒤)

3️⃣ 대소문자 구분 없이 비교 (sensitivity: "base")

console.log("a".localeCompare("A", "en", { sensitivity: "base" })); // 0 (같음)
console.log("a".localeCompare("A", "en", { sensitivity: "case" })); // -1 (대소문자 구분)

4️⃣ 숫자 비교 (numeric: true)

console.log("10".localeCompare("2")); // 1 ("10"이 "2"보다 앞)
console.log("10".localeCompare("2", undefined, { numeric: true })); // -1 ("2"가 "10"보다 앞)


localeCompare() 활용 예시

🔹 문자열 정렬하기

let words = ["banana", "apple", "cherry"];
words.sort((a, b) => a.localeCompare(b));
console.log(words); // ["apple", "banana", "cherry"]

🔹 한글 정렬

let koreanWords = ["다람쥐", "가방", "나무"];
koreanWords.sort((a, b) => a.localeCompare(b, "ko-KR"));
console.log(koreanWords); // ["가방", "나무", "다람쥐"]


✅ 결론

  • localeCompare()는 문자열을 로케일에 따라 비교하고 정렬할 때 유용함
  • numeric: true 옵션을 사용하면 숫자 포함 문자열을 자연스럽게 비교 가능
  • sensitivity 옵션을 활용하면 대소문자, 악센트 차이를 조정 가능

👉 정렬이 필요할 때 localeCompare()sort()와 함께 사용하면 더욱 강력함! 🚀

Leave a Comment