4 способа сравнить строки в JavaScript
В этой заметке ты узнаешь как сравнивать строки в JS с примерами использования.
Строгое равенство строк
Чтобы понять равны ли две строки, можно использовать оператор строгого сравнения === . Он вернет false если строки отличаются и true , если они равны.
const s1 = 'learn'; const s2 = 'today'; console.log(s1 === 'learn'); // true console.log(s1 === s2); // false
Сравнение строк с помощью === всегда происходит с учетом регистра, то есть учитываются большие и маленькие буквы.
const s1 = 'javascript'; const s2 = 'Javascript'; console.log(s1 === s2); // false
Сравнение строк без учета регистра
Если тебе неважно в каком регистре написаны буквы в строках, то ты можешь перевести обе строки в нижний регистр и после этого выполнить сравнение.
const s1 = 'javascript'; const s2 = 'Javascript'; console.log(s1.toLowerCase() === s2.toLowerCase()); // true
Сравнение длины строк
Если тебе нужно узнать какая из двух строк длиннее, то операторы “больше” и “меньше” не подойдут. Они сравнивают строки в алфавитном порядке и учитывают длину строк только в самую последнюю очередь.
const s1 = 'javascript'; const s2 = 'node.js'; console.log(s1 > s2); // false
Длина строки хранится в специальном поле length . Сравнивая значение этого поля у разных строк, мы узнаем какая из них длиннее.
const s1 = 'javascript'; const s2 = 'node.js'; console.log(s1.length > s2.length); // true
Проверка вхождения строки
Для того, чтобы проверить, входит ли одна строка в другую — используется встроенная функция includes .
const s1 = 'javascript'; const s2 = 'python'; console.log(s1.includes('script')); // true console.log(s2.includes('script')); // false
как сравнить строки в js
Для сравнения строк в JavaScript есть несколько способов.
- Оператор сравнения «==»:
Он сравнивает строки посимвольно, начиная с первого символа. Если символы равны, то переходит к следующему символу, иначе оператор возвращает false . Если строки имеют разную длину, то оператор возвращает false . Пример:
const str1 = 'hello'; const str2 = 'HELLO'; console.log(str1 == 'hello'); // true console.log(str1 == str2); // false
- Оператор сравнения «===»:
Он работает так же, как и оператор «==», но при этом учитывает типы данных. Если типы данных не равны, то оператор возвращает false . Пример:
const str1 = 'hello'; const str2 = 'hello'; console.log(str1 === 'hello'); // true console.log(str1 === str2); // true
- Методы сравнения строк:
JavaScript имеет два метода для сравнения строк: localeCompare() и compare() . Они сравнивают строки лексикографически, то есть по алфавиту.
Метод localeCompare() сравнивает строки на основе языковых настроек пользователя. Он возвращает число, которое указывает на результат сравнения. Если первая строка меньше второй, то метод возвращает отрицательное число. Если строки равны, то метод возвращает 0 . Если первая строка больше второй, то метод возвращает положительное число. Пример:
const str1 = 'apple'; const str2 = 'banana'; const result = str1.localeCompare(str2); console.log(result); // -1
Метод compare() сравнивает строки на основе их кодовой точки Unicode. Он возвращает число, которое указывает на результат сравнения. Если первая строка меньше второй, то метод возвращает отрицательное число. Если строки равны, то метод возвращает 0 . Если первая строка больше второй, то метод возвращает положительное число. Пример:
const str1 = 'apple'; const str2 = 'banana'; const result = str1.compare(str2); console.log(result); // -1
Важно понимать, что все эти методы и операторы сравнения чувствительны к регистру символов. Если вы хотите произвести сравнение без учета регистра символов, то нужно привести строки к одному регистру, например, к нижнему или верхнему, и уже после этого сравнивать строки. Пример:
const str1 = 'HeLLo'; const str2 = 'hello'; console.log(str1.toLowerCase() === str2.toLowerCase()); // true
Сравните две строки в JavaScript
В этом посте мы обсудим, как сравнить две строки в JavaScript.
1. Использование localeCompare() метод
The localeCompare() Метод сравнивает строку с другой строкой и возвращает целое число, указывающее, идет ли строка до, после или эквивалентно указанной строке. Он возвращает отрицательное число, если строка находится перед строкой сравнения; положительный, если строка находится после строки сравнения; 0, если обе строки эквивалентны.
Сравнение строк в Javascript
Проверяю ответ от сервера, откуда приходит строка surname в переменную data . В итоге имею очень странную картину:
console.log(typeof(data)) // string console.log(data) // surname var f = (data === "surname"); console.log(f) // false;
Спасайте! Как найти ошибку?
Отслеживать
задан 31 янв 2016 в 9:54
3,296 17 17 серебряных знаков 31 31 бронзовый знак
Как вариант получить ваш результат – объявить var data = «surnаme»; – тут буква «а» – кириллическая. А в проверках у вас всё латиницей.
31 янв 2016 в 9:58
Пробела в строке, которая приходит с сервера, нет?
31 янв 2016 в 9:59
этот вариант уже проверил и все равно так
31 янв 2016 в 9:59
@Sapphiron, спасибо огромное))
31 янв 2016 в 10:01
Посмотрите посимвольно, из чего состоит строка: console.log( data.split(«»).reduce(function(p,c)
31 янв 2016 в 10:07
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Возможен пробел в строке. Если не всегда известно, как именно могут прийти данные (например, программно достаются откуда-то), можно обрезать пробелы с помощью str.trim() .
Отслеживать
ответ дан 31 янв 2016 в 10:06
925 5 5 серебряных знаков 13 13 бронзовых знаков
Странно, что не упомянут (не использован) метод localeCompare (подробнее — тут) либо универсальный match()
Отслеживать
ответ дан 29 апр 2019 в 12:21
131 3 3 бронзовых знака
Как эти методы помогут с проблемой в вопросе?
29 апр 2019 в 12:40
У вас тут строгое сравнение ( === ):
data === surname
А надо нестрогое ( == ):
data == surname
Отслеживать
11.5k 8 8 золотых знаков 42 42 серебряных знака 69 69 бронзовых знаков
ответ дан 30 апр 2018 в 9:08
Лучше вообще не использовать нестрогое сравнение
29 апр 2019 в 12:59
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.