Проверяет умение сравнивать строки без учёта регистра, что важно для валидации ввода, поиска и сортировки данных.
Сравнение строк без учёта регистра — частая задача при работе с пользовательским вводом, поиском, сортировкой и проверкой данных. В JavaScript строки чувствительны к регистру, поэтому "Hello" и "hello" считаются разными. Чтобы игнорировать регистр, строки приводят к единому виду перед сравнением.
Простой пример:
const a = 'Hello';
const b = 'hello';
console.log(a.toLowerCase() === b.toLowerCase()); // true
// С localeCompare
console.log(a.localeCompare(b, undefined, { sensitivity: 'base' }) === 0); // true
Методы toLowerCase() и toUpperCase() не всегда корректны для всех языков. Например, в турецком языке буква "I" имеет особое поведение. Для надёжного сравнения лучше использовать localeCompare с указанием локали. Также стоит помнить о нормализации Unicode: символы могут быть представлены разными последовательностями, и перед сравнением полезно вызвать normalize().
const s1 = '\u00F1'; // ñ
const s2 = 'n\u0303'; // n + combining tilde
console.log(s1 === s2); // false
console.log(s1.normalize() === s2.normalize()); // true
Такой подход нужен при поиске по массиву строк, фильтрации, проверке логинов и email, сортировке списков. В базах данных аналогичная логика реализуется через COLLATE или функции LOWER/UPPER.
Итог: для простых случаев достаточно toLowerCase() и ===, но для международных приложений используйте localeCompare с sensitivity: 'base' и нормализацию Unicode.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию