Помогите с преобразованием строкового значения в boolean
У меня есть скрытая форма на странице, которая обновляется, когда пользователь что-то выбирает из списка. В этой форме есть поля с булевыми значениями, но когда они попадают в скрытые input поля, то становятся строками.
Сейчас я проверяю значение вот так:
var userChoice = document.forms.myForm.BOOLEAN_FLAG.value;
var isEnabled = userChoice === 'true';
Это работает, но мне кажется, что должен быть более правильный способ. Может, есть какая-то встроенная функция или лучший подход для такого преобразования? Буду благодарен за советы.
А что если !!userChoice? Хотя любая непустая строка даст true, даже ‘false’. Для форм твой явный подход лучше. Откуда вообще булевы в форму попадают? Может на этапе записи сразу обработать?
Твой подход работает, но есть пару альтернатив. Я обычно делаю Boolean(userChoice && userChoice !== 'false') - покрывает больше случаев. Можно еще JSON.parse(), но там нужно ловить исключения. Твое решение через строгое сравнение самое надежное для форм - знаешь точно какие значения придут. Не усложняй, раз работает.
Можешь попробовать userChoice === 'true' ? true : false - то же самое, но некоторые любят тернарник. Или регулярку /^true$/i.test(userChoice) для нечувствительности к регистру. Но твой вариант самый читаемый. В продакшене лучше быть понятным, чем умничать.