Resumo : neste tutorial, você aprenderá como verificar se duas strings são iguais em JavaScript.
Suponha que você tenha as duas strings a seguir:
const s1 = 'Hi';
const s2 = 'Hi';
Linguagem de código: JavaScript ( javascript )
Como s1
e s2
têm os mesmos caracteres, eles são iguais quando você os compara usando o ===
operador:
console.log(s1 === s2); // true
Linguagem de código: JavaScript ( javascript )
Considere o seguinte exemplo:
const s1 = 'café';
const s2 = 'café';
console.log(s1===s2); // false
Linguagem de código: JavaScript ( javascript )
Neste exemplo, s1
e s2
parece o mesmo. Mas a comparação s1 === s2 é avaliada como false
.
Para entender como funciona, primeiro você precisa conhecer o conceito de grafema e combinação de caracteres.
O que é um grafema
Um grafema é a menor unidade funcional de um sistema de escrita.
Por exemplo, a string café
tem quatro letras: c
, a
, f
e é
(ou e
com acute
). A maneira como você vê que cada caractere é uma unidade de escrita é chamada de grafema.
E alguns grafemas podem ser representados usando diferentes sequências de caracteres.
Existem alguns caracteres que quando você os coloca depois de um caractere, modificam o caractere anterior. Esses caracteres são chamados de caracteres de combinação.
O que é um personagem combinado
Um caractere de combinação é um caractere que se aplica ao caractere base precedente para criar um grafema.
Em nosso exemplo, the é
é um grafema atômico. E você pode codificá-lo usando letras minúsculas e
(caractere base) e um caractere de combinação (◌́):
e + ◌́ = é
Em JavaScript, o caractere é é representado da seguinte forma:
const c1 = 'e\u0301';
console.log(c1); //
é
Linguagem de código: JavaScript ( javascript )
Neste exemplo, \u0301
é a sequência de escape Unicode do caractere de combinação ◌́.
Além disso, você pode codificar o mesmo grafema é usando letras minúsculas e
com caractere agudo:
const c2 = 'é';
console.log(c2);
Linguagem de código: JavaScript ( javascript )
Agora, se você comparar os c1
e c2
do mesmo grafema é
, descobrirá que eles não são iguais:
const c1 = 'e\u0301';
const c2 = 'é';
console.log(c1 === c2); // false
Linguagem de código: JavaScript ( javascript )
Para comparar essas strings com segurança, você usa o normalize()
método. Este método retorna a forma de normalização Unicode de uma string. Por exemplo:
const c1 = 'e\u0301';
console.log(c1.normalize()); //
é
Linguagem de código: JavaScript ( javascript )
Portanto, c1
e c2
será igual após a normalização:
const c1 = 'e\u0301';
const c2 = 'é';
console.log(c1.normalize() === c2.normalize()); // true
Linguagem de código: JavaScript ( javascript )
Da mesma forma, comparar as seguintes strings também retorna true
:
const s1 = 'café';
const s2 = 'café';
console.log(s1.normalize() === s2.normalize()); // true
Linguagem de código: JavaScript ( javascript )
Resumo
- Geralmente, se as strings contêm apenas caracteres ASCII, você usa o operador === para verificar se eles são iguais.
- Quando as strings contêm caracteres que incluem caracteres de combinação, você as normaliza primeiro antes de compará-las quanto à igualdade.