두 문자열이 같은지, 일치 여부를 확인하는 방법에 대해서 알아보겠습니다.

문자열 동등 비교는 자주 하는데, 연산자 ===를 사용해야하는지 ==를 사용해야하는지 헷갈릴 때가 많습니다. 예제와 함께 알아보겠습니다.

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’)