Как я могу преобразовать строку в логическое значение в JavaScript? - PullRequest
2162 голосов
/ 05 ноября 2008

Могу ли я преобразовать строку, представляющую логическое значение (например, 'true', 'false') во внутренний тип в JavaScript?

У меня есть скрытая форма в HTML, которая обновляется на основе выбора пользователя в списке. Эта форма содержит некоторые поля, которые представляют логические значения и динамически заполняются внутренним логическим значением. Однако после помещения этого значения в скрытое поле ввода оно становится строкой.

Единственный способ определить логическое значение поля после его преобразования в строку - это зависеть от литерального значения его строкового представления.

var myValue = document.myForm.IS_TRUE.value;
var isTrueSet = myValue == 'true';

Есть ли лучший способ сделать это?

Ответы [ 74 ]

0 голосов
/ 14 февраля 2017
var trueVals = ["y", "t", "yes", "true", "gimme"];
var isTrueSet = (trueVals.indexOf(myValue) > -1) ? true : false;

или даже просто

var trueVals = ["y", "t", "yes", "true", "gimme"];
var isTrueSet = (trueVals.indexOf(myValue) > -1);

Похож на некоторые операторы switch, но более компактен. Возвращаемое значение будет истинным, только если строка является одной из строк trueVals. Все остальное ложно. Конечно, вы можете захотеть нормализовать строку ввода, сделать ее строчными и обрезать все пробелы.

0 голосов
/ 10 апреля 2017

Преобразовать строку в логическое значение

var vIn = "true";
var vOut = vIn.toLowerCase()=="true"?1:0;

Преобразовать строку в число

var vIn = 0;
var vOut = parseInt(vIn,10/*base*/);
0 голосов
/ 31 мая 2019

Самый простой способ, которым я всегда пользуюсь - это троичный оператор:

let value = 'true';
let output = value === 'true' ? true : false;
0 голосов
/ 05 ноября 2008
 var myBool = Boolean.parse("true");

или

var myBool = Boolean("true");

или

var myBool = !!"true";

Не уверен, что первый относится к IE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...