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

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

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

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

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

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

Ответы [ 74 ]

1 голос
/ 10 апреля 2014

Более короткий способ записать это, может быть var isTrueSet = (myValue === "true") ? true : false; Предполагается, что только "true" является истинным, а другие значения ложными.

1 голос
/ 26 октября 2017

Я использую его, когда получаю значение из URL / формы или другого источника.

Это довольно универсальный однострочный фрагмент кода.

Возможно, не самый лучший по производительности, если вам нужно запустить его миллионы раз, дайте мне знать, мы можем проверить, как его оптимизировать, в противном случае он достаточно хорош и настраиваем.

boolResult = !(['false', '0', '', 'undefined'].indexOf(String(myVar).toLowerCase().trim()) + 1);

Результат:

myVar = true;  // true
myVar = 'true';  // true
myVar = 'TRUE';  // true
myVar = '1';  // true
myVar = 'any other value not related to false';  // true

myVar = false; // false
myVar = 'false';  // false
myVar = 'FALSE';  // false
myVar = '0';  // false
0 голосов
/ 08 января 2019

В nodejs с помощью node-boolify возможно

Результаты логического преобразования

Boolify(true); //true
Boolify('true'); //true
Boolify('TRUE'); //null
Boolify(1); //true
Boolify(2); //null
Boolify(false); //false
Boolify('false'); //false
Boolify('FALSE'); //null
Boolify(0); //false
Boolify(null); //null
Boolify(undefined); //null
Boolify(); //null
Boolify(''); //null
0 голосов
/ 22 января 2010

Просто сделайте:

var myBool = eval (yourString);

Примеры:

alert (eval ("true") == true); // TRUE
alert (eval ("true") == false); // FALSE
alert (eval ("1") == true); // TRUE
alert (eval ("1") == false); // FALSE
alert (eval ("false") == true); // FALSE;
alert (eval ("false") == false); // TRUE
alert (eval ("0") == true); // FALSE
alert (eval ("0") == false); // TRUE
alert (eval ("") == undefined); // TRUE
alert (eval () == undefined); // TRUE

Этот метод обрабатывает пустую строку и неопределенную строку естественным образом, как если бы вы объявили переменную без присвоения ей значения.

0 голосов
/ 03 августа 2010

Следующего будет достаточно

String.prototype.boolean = function() {
    return "true" == this; 
};

"true".boolean() // returns true "false".boolean() // returns false
0 голосов
/ 24 апреля 2015

работает отлично и очень просто:

var boolean = "false";
boolean = (boolean === "true");

//boolean = JSON.parse(boolean); //or this way.. 

чтобы проверить это:

var boolean = "false";
boolean = (boolean === "true");

//boolean = JSON.parse(boolean); //or this way.. 

if(boolean == true){
    alert("boolean = "+boolean);
}else{
    alert("boolean = "+boolean);
}
0 голосов
/ 02 августа 2017

Функция `toBoolean 'возвращает false для null, undefined,' ',' false '. Возвращает true для любой другой строки:

const toBoolean = (bool) => {
  if (bool === 'false') bool = false
  return !!bool
}

toBoolean('false') // returns false
0 голосов
/ 14 марта 2016

Чтобы получить логические значения из строки или числа Вот хорошее решение:

var boolValue = Boolean(Number('0'));

var boolValue = Boolean(Number('1'));

Сначала вернется false, а вторым вернется true.

0 голосов
/ 19 июля 2017

Вы можете использовать Function для возврата значения Boolean из строки "true" или "false"

const TRUE_OR_FALSE = str => new Function(`return ${str}`)();

const [TRUE, FALSE] = ["true", "false"];

const [T, F] = [TRUE_OR_FALSE(TRUE), TRUE_OR_FALSE(FALSE)];

console.log(T, typeof T); // `true` `"boolean"`

console.log(F, typeof F); // `false` `"boolean"`
0 голосов
Boolean(Number(value));
var value = 1;  //true
var value = "1" //true
var value = 0;  //false
var value = "0" //false`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...