JavaScript: Сравнение строк
Операции сравнения работают не только с числами, но и со строками. В JavaScript строки сравниваются лексикографически: посимвольно слева направо по числовым кодам символов (Unicode).
console.log('apple' < 'banana'); // => true
console.log('cat' > 'dog'); // => false
console.log('abc' === 'abc'); // => true
console.log('hello' !== 'world'); // => trueЗдесь 'apple' < 'banana', потому что код символа a (97) меньше кода b (98), и именно первый различающийся символ решает исход сравнения. Узнать код символа можно методом charCodeAt():
console.log('a'.charCodeAt(0)); // => 97
console.log('b'.charCodeAt(0)); // => 98Сравнение чувствительно к регистру: код 'Z' (90) меньше кода 'a' (97). Несколько примеров, где первые буквы в разном регистре:
console.log('Zebra' < 'apple'); // => true — 'Z'(90) < 'a'(97)
console.log('apple' < 'Banana'); // => false — 'a'(97) > 'B'(66)
console.log('Apple' < 'apple'); // => true — 'A'(65) < 'a'(97)Напишем функцию, которая проверяет, начинается ли слово с заданной буквы. Для этого возьмём первый символ строки и сравним его с нужной буквой:
const startsWithLetter = (word, letter) => word[0] === letter;
console.log(startsWithLetter('apple', 'a')); // => true
console.log(startsWithLetter('banana', 'a')); // => falseОперации сравнения — такие же выражения, как и арифметические. В них можно подставлять готовые значения и другие выражения, например word[0] выше. Можно использовать и свойство .length:
console.log('apple'.length > 3); // => true, потому что длина равна 5
console.log('hi'.length > 3); // => false, потому что длина равна 2Сначала вычисляется 'apple'.length (получается число 5), а потом это число сравнивается с 3. То есть сначала считаются операнды выражения, а затем выполняется сравнение.
Полезные предикаты
У строк в JavaScript есть встроенные методы-предикаты. Они возвращают true или false и помогают проверять разные свойства строки:
console.log('hello'.startsWith('he')); // => true — строка начинается с 'he'
console.log('hello'.endsWith('lo')); // => true — строка заканчивается на 'lo'
console.log('hello'.includes('ell')); // => true — строка содержит 'ell'Такие методы позволяют проверять строки на нужные условия прямо в коде, без написания дополнительных функций.
Задание
При регистрации на сайте программа проверяет, что пароль достаточно длинный — больше 5 символов. Напишите функцию isLongWord(), которая возвращает true, если длина переданного слова больше 5 символов, и false в противном случае.
Пример работы:
isLongWord('apple'); // => false
isLongWord('banana'); // => trueПолезное
Ваше упражнение проверяется по этим тестам
// @ts-check
import { expect, test } from 'vitest';
import f from './index.js';
test('bool strings', () => {
expect(f('apple')).toBe(false);
expect(f('banana')).toBe(true);
expect(f('pineapple')).toBe(true);
});Решение учителя откроется через:
20:00
