localeCompare()
는 JavaScript의 String
객체에서 제공하는 메서드로, 두 문자열을 로케일에 맞게 비교하는 기능을 합니다.
✅ 기본 문법
string1.localeCompare(string2, [locales], [options])
🔹 매개변수
string2
(필수): 비교 대상이 되는 문자열locales
(선택): 특정 언어 및 로케일(예:'en-US'
,'ko-KR'
)options
(선택): 비교 방식을 지정하는 옵션 객체sensitivity
: 대소문자 및 악센트 구분 방식 설정 ("base"
,"accent"
,"case"
,"variant"
)numeric
: 숫자를 올바르게 비교 (true
설정 시"2"
가"10"
보다 작음)
🔹 반환 값
-1
→string1
이string2
보다 앞에 위치→ 두 문자열이 동일
1
→string1
이string2
보다 뒤에 위치
✅ 사용 예제
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()
와 함께 사용하면 더욱 강력함! 🚀