Сравните две строки, чтобы узнать, одинаковые ли они.
Используйте оператор равенства (==) в условном тесте:
var strName = prompt("What's your name?", "");
if (strName == "Shelley") {
alert("Your name is Shelley! Good for you!");
} else {
alert("Your name isn't Shelley. Bummer.");
}
Две строки можно сравнить с помощью оператора равенства (==). При его использовании в условном операторе блок кода выполняется, если тест равен true (строки равны):
if (strName == "Shelley") {
alert("Your name is Shelley! Good for you!");
}
Если строки не равны, обрабатывается первый оператор, следующий за блоком условного оператора. Если используется условный оператор if…else, обрабатывается блок кода, следующий за ключевым словом else:
if (strName == "Shelley") {
alert("Your name is Shelley! Good for you!");
} else {
alert("Your name isn't Shelley. Bummer.");
}
Факторы, которые могут повлиять на успех сравнения строк:
Строки имеют регистр и могут состоять из заглавных, строчных символов или их комбинации.
Если регистр не является проблемой, вы, скорее всего, захотите преобразовать
в нижний или верхний регистр, используя встроенные методы String toLowerCase и toUpperCase, перед выполнением сравнения, как показано в следующем коде:
var strName = prompt("What's your name?", "");
if (strName.toUpperCase () == "SHELLEY") {
alert("Your name is Shelley! Good for you!");
} else {
alert("Your name isn't Shelley. Bummer.");
}
**Обратите внимание, что метод toUpperCase (и toLowerCase) не принимают никаких параметров.
Операторы сравнения работают численно с числами, но лексически со строками.
Например, значение “dog” будет лексически больше, чем “cat”, потому что буква “d” в слове “dog” находится позже в алфавите, чем буква “c” в слове “cat”:
var sOne = "cat";
var sTwo = "dog"
if (sOne > sTwo // false, because "cat" is lexically less than "dog"
Если два строковых литерала различаются только регистром, то заглавных символов лексически больше, чем строчных:
var sOne = "Cat";
var sTwo = "cat";
if (sOne >= sTwo) // true, because 'C' is lexically greater than 'c'
Не существует операторов strict greater than или strict less than, поэтому не имеет значения, различаются ли типы данных операндов:
var sOne = new String("cat");
var sTwo = "cat";
if (sOne <= sTwo) // both equal, so true, as data type doesn't matter
Наконец, метод localeCompare принимает один параметр – строку, которая сравнивается со строковым значением, к которому она присоединена.
Метод возвращает числовое значение, равное 0, если две строки одинаковы; -1, если строковый параметр лексически больше исходной строки; 1 в противном случае:
var fruit1 = "apple";
var fruit2 = "grape";
var i = fruit1.localeCompare(fruit2); // returns -1