Как преобразовать строку в Boolean?
Я попытался использовать конструктор Boolean("false")
, но он всегда прав.
Как преобразовать строку в Boolean?
Я попытался использовать конструктор Boolean("false")
, но он всегда прав.
Я бы использовал простое сравнение строк здесь, насколько я знаю, нет встроенной функции для того, что вы хотите сделать (если вы не хотите прибегать к eval
..., который у вас нет).
var myBool = myString == "true";
Я хотел бы ответить на это, чтобы улучшить принятый ответ.
Чтобы повысить производительность, и в реальных случаях, когда входные данные формы могут передавать значения, такие как "true" или "false", этот метод даст наилучшие результаты.
function stringToBool(val) {
return (val + '').toLowerCase() === 'true';
}
JSPerf
вы также можете использовать функцию JSON.parse()
JSON.parse( "true" ) возвращает true (Boolean)
JSON.parse( "false" ) return false (Boolean)
На самом деле вы не понимаете значение Boolean method.It всегда возвращает true, если переменная не является пустой или пустой.
var variable = some value;
Boolean(variable);
Если моя переменная имеет некоторое значение, тогда она будет
return true
еще
return false
Вы не можете использовать Boolean, как вы думаете.
Я все еще удивляюсь тому, как люди вслепую голосуют за решения, которые не будут работать, например:
var myBool = myString == "true";
Вышеописанное значение BUGGY!!!
Не уверен? Просто попробуйте myString = true (я имею в виду логическое значение true). Какова оценка сейчас? Opps: false!
Alternative
var myString=X; // X={true|false|"true"|"false"|"whatever"}
myString=String(myString)=='true';
console.log(myString); // plug any value into X and check me!
всегда будет правильно оценивать!
trick string для логического преобразования в javascript. например.
var bool= "true";
console.log(bool==true) //false
var bool_con = JSON.parse(bool);
console.log(bool_con==true) //true
Зависит от того, что вы видите как false в строке.
Пустая строка, слово false, 0, должно быть все это false или только пустое или только слово false.
Вероятно, вам нужно создать собственный метод для проверки строки и вернуть true или false, чтобы убедиться, что он делает то, что вам нужно.
Я считаю, что следующий код выполнит эту работу.
function isBoolean(foo) {
if((foo + "") == 'true' || (foo + "") == 'false') {
foo = (foo + "") == 'true';
} else {
console.log("The variable does not have a boolean value.");
return;
}
return foo;
}
Объяснение кода:
foo + ""
преобразует переменную 'foo' в строку, поэтому, если она уже имеет значение boolean, функция не вернет недопустимый результат.
(foo + "") == 'true'
Это сравнение вернет true, только если 'foo' равен 'true' или true (string или boolean). Обратите внимание, что он чувствителен к регистру, поэтому "True" или любое другое изменение приведет к ложному.
(foo + "") == 'true' || (foo + "") == 'false'
Аналогично, приведенное выше предложение приведет к истинному только в том случае, если переменная 'foo' равна 'true', true, 'false' или false. Поэтому любое другое значение, такое как "test", вернет false, и тогда он не будет запускать код внутри оператора "if". Это гарантирует, что будут учитываться только логические значения (строка или нет).
В 3-й строке значение "foo", наконец, "преобразуется" в boolean.
Эти строки дают следующий вывод:
Boolean(1).toString(); // true
Boolean(0).toString(); // false
javascript:var string="false";alert(Boolean(string)?'FAIL':'WIN')
не будет работать, потому что любая непустая строка true
javascript:var string="false";alert(string!=false.toString()?'FAIL':'WIN')
работает, потому что по сравнению с представлением строки
К сожалению, я не нашел функцию вроде Boolean.ParseBool('true'), которая возвращает true как булевский тип, как в С#. Поэтому обходной путь
var setActive = 'true';
setActive = setActive == "true";
if(setActive)
// statements
else
// statements.
См. этот вопрос для справки:
Как преобразовать строку в boolean в JavaScript?
Существует несколько способов:
// Watch case sensitivity!
var boolVal = (string == "true");
или
var boolVal = Boolean("false");
или
String.prototype.bool = function() {
return (/^true$/i).test(this);
};
alert("true".bool());
Вы можете попробовать следующее:
var myBoolean = Boolean.parse(boolString);