Перейти к содержимому

Как сравнить строки в js

  • автор:

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 есть несколько способов.

  1. Оператор сравнения «==»:

Он сравнивает строки посимвольно, начиная с первого символа. Если символы равны, то переходит к следующему символу, иначе оператор возвращает false . Если строки имеют разную длину, то оператор возвращает false . Пример:

const str1 = 'hello'; const str2 = 'HELLO'; console.log(str1 == 'hello'); // true console.log(str1 == str2); // false 
  1. Оператор сравнения «===»:

Он работает так же, как и оператор «==», но при этом учитывает типы данных. Если типы данных не равны, то оператор возвращает false . Пример:

const str1 = 'hello'; const str2 = 'hello'; console.log(str1 === 'hello'); // true console.log(str1 === str2); // true 
  1. Методы сравнения строк:

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 

Как сравнить строки в JS

Сравнить строки можно с помощью следующих операторов: > , , == , === . Смотрите пример:

let str1 = ‘abcde’; let str2 = ‘abcd’; let str3 = ‘abcde’; console.log(‘str1 > str2’, str1 > str2); console.log(‘str1 == str2’, str1 == str2); console.log(‘str1 === str3’, str1 === str3);

Результат выполнения кода:

‘str1 > str2’ true ‘str1 == str2’ false ‘str1 === str3’ true

С помощью метода localeCompare

Чтобы сравнить строки также можно воспользоваться методом localeCompare , который возвращает число 1 , если первая строка больше второй, -1 — если меньше и 0 — если обе строки равны друг другу. Смотрите пример:

let str1 = ‘abcde’; let str2 = ‘abcd’; let str3 = ‘abcde’; let res1 = str1.localeCompare(str2); let res2 = str2.localeCompare(str1); let res3 = str1.localeCompare(str3); console.log(‘res1’, res1); console.log(‘res2’, res2); console.log(‘res3’, res3);

Результат выполнения кода:

‘res1’ 1 ‘res2’ -1 ‘res3’ 0

Смотрите также

  • урок
    cтроки в JavaScript

Как сравнить каждый символ строки с каждым

Алгоритм (не тех выражений которые выше!), естесственно на JS, для краткости:

function baz(str) < const len = str.length; for (let c, i = 0; i < len; i++) < c = str.charAt(i); for (let j = i + 1; j < len; j++) < if (str.charAt(j) === c) return true; >> return false; > 

Отслеживать
ответ дан 28 мар 2019 в 23:15
10.9k 1 1 золотой знак 12 12 серебряных знаков 35 35 бронзовых знаков
с регуляркой норм вариант)), только боюсь за алгоритм не прокатит))
28 мар 2019 в 23:18

@StrangerintheQ, да, ведь они созданы как раз для таких задач 🙂 Кстати, не удивлюсь если регулярка окажется еще и быстрее прочих подходов. выражение достаточно простое. А насчет алгоритма, дополню ответ)

28 мар 2019 в 23:42

var stt = 'asfafgadgjkasjfkladfkgjdflkgjkldfgj'; var temp = stt; // переносим во временную переменную var exist = false; // выставляем флаг который будет определять есть ли в строке одинаковые символы for(i = 0; i < temp.length; i++)< // тут все ясно должно быть идем по строке for(j = i+1; j < temp.length; j++)< // проходим все символы от текущего до конца строки для поиска одинаковых символов if(temp[i] == temp[j])< // само сравнение exist = true; // если символы одинаковые переводим флаг в true temp = temp.split(temp[i]).join(''); // удаляем все одинаковые символы из временной строки(не обьязательно) >> > console.log(exist); 

Для оптимизации можно во второй цыкл break закинуть)

Отслеживать
ответ дан 28 мар 2019 в 22:59
Yura Rosiak Yura Rosiak
166 10 10 бронзовых знаков

Я бы так сделал:

// разбиваем строку на символы и применяем свертку let counts = 'ABBCA'.split("").reduce((a, c) => < // считаем символы в аккумуляторе return (a[c] = ++a[c] || 1) && a; >,<>); // ищем в результате свертки счетчик со значением больше 1 let result = Object.values(counts).filter(i => i != 1).length > 0; console.log(counts) console.log(result)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *