Преобразование строки в булевый формат может быть необходимо в двух случаях: либо само значение написано строкой ('true' или 'false'), либо нам нужен логический эквивалент строки (если строка пустая, то это false, если нет - то true).
Рассмотрим популярнейшие способы преобразования строкового типа данных в булевый, учитывая разные случаи.
test()
Метод test() сопоставляет регулярное выражение со строкой. Мы проверяем, содержит ли строка текст 'true' или нет.
let stringValue = 'true';
let boolValue = (/true/i).test(stringValue) // true
JSON.parse()
Метод parse() объекта JSON анализирует строку как JSON и преобразует ее в значение соответствующего типа.
let stringValue = 'true';
let boolValue = JSON.parse(stringValue); // true
Оператор сравнения
Оператор сравнения позволяет сопоставить значения элементов справа и слева. Он возвращает true, если оба операнда имеют одинаковое значение, и false в противном случае.
let stringValue = 'true';
let boolValue = (stringValue == 'true'); // true
Boolean()
Объект Boolean() - это оболочка для преобразования в булевые значения. Пустые объекты оцениваются как ложные, а непустые объекты оцениваются как истинные.
Boolean('true'); // true
Boolean('false'); // true
Boolean(' '); // true
Boolean(''); // false
Двойное отрицание (!!)
Суть такого оператора - инвертировать результат одинарного оператора (!), который преобразует объект в булевое значение. Принцип работы тот же, что и у Boolean(), однако в коде выглядит более лаконичней.
Примеры работы одинарного оператора !:
!'test'; // false
!'true'; // false
!'false'; // false
!' '; // false
!''; // true
С двойным отрицанием:
!!'test'; // true
!!'true'; // true
!!'false'; // true
!!' '; // true
!!''; // false