[Javascript] 두 문자열 일치 여부 확인
두 문자열이 같은지, 일치 여부를 확인하는 방법에 대해서 알아보겠습니다.
문자열 동등 비교는 자주 하는데, 연산자 ===
를 사용해야하는지 ==
를 사용해야하는지 헷갈릴 때가 많습니다. 예제와 함께 알아보겠습니다.
1. === 연산자를 이용한 방법
===
연산자는 두개의 객체를 비교할 때, 값과 타입이 모두 일치하는 경우 true를 리턴하며 그렇지 않으면 false를 리턴합니다.
아래와 같이 두개의 문자열이 같은지 비교할 수 있으며, 값과 타입이 모두 일치해야 같다고 판단됩니다.
let str1 = "Hello";
let str2 = "Hello";
if (str1 === str2) {
console.log("두 문자열은 동일합니다.");
} else {
console.log("두 문자열은 다릅니다.");
}
Output:
두 문자열은 동일합니다.
===로 다른 타입 객체 비교
만약 아래와 같이, 숫자와 문자열을 비교할 때, 타입은 다르지만 타입을 변환했을 때 값이 같은 경우에는 ===
는 false를 리턴합니다.
let obj1 = "5";
let obj2 = 5;
if (obj1 === obj2) {
console.log("두 객체는 동일합니다.");
} else {
console.log("두 객체는 다릅니다.");
}
Output:
두 객체는 다릅니다.
2. == 연산자를 이용한 방법
==
연산자는 값만 비교하며, 타입이 달라도 같다고 판단할 수 있습니다. 이 연산자는 타입을 동일하게 변환하여 값을 비교합니다. 값이 같다면 true를 리턴하며, 그렇지 않으면 false를 리턴합니다.
아래 예제에서 두개의 객체를 비교하는데, "5"
는 문자열이고, 5
는 number 타입입니다. 두 객체를 문자열로 변환하면 값은 동일합니다. 여기서 ==
는 값이 동일하기 때문에 true를 리턴합니다.
let obj1 = "5";
let obj2 = 5;
if (obj1 == obj2) {
console.log("두 객체는 동일합니다.");
} else {
console.log("두 객체는 다릅니다.");
}
Output:
두 객체는 동일합니다.
3. localeCompare()를 이용한 방법
str1.localeCompare(str2)는 str1과 str2를 비교하여 다음과 같은결과를 리턴합니다.
- 0 : 두개의 문자열은 동일
- 음수 : str1이 str2보다 사전순서상(알파벳 순서) 앞에 있음
- 양수 : str1이 str2보다 사전순서상(알파벳 순서) 뒤에 있음
따라서, 아래와 같이 두 문자열이 같은지 비교할 수 있습니다.
let str1 = "apple";
let str2 = "apple";
let result = str1.localeCompare(str2);
if (result === 0) {
console.log("두 문자열은 동일합니다.");
} else if (result < 0) {
console.log("str1이 str2보다 앞에 있습니다.");
} else {
console.log("str1이 str2보다 뒤에 있습니다.");
}
Output:
두 문자열은 동일합니다.
localeCompare()
는 현재 시스템 설정 지역(Locale)에 따라 동작하며, 아래와 같이 다른 지역으로 설정하여 다국어 언어에 대해서도 비교할 수 있습니다.
- localeCompare(compareString, locales)
- ex) str1.localeCompare(str2, ‘en’)