【发布时间】:2011-05-19 16:12:52
【问题描述】:
如何将字符串转换为布尔值?
我尝试使用构造函数Boolean("false"),但总是如此。
【问题讨论】:
-
看看这个,之前的类似问题的答案Other stack overflow question
标签: javascript
如何将字符串转换为布尔值?
我尝试使用构造函数Boolean("false"),但总是如此。
【问题讨论】:
标签: javascript
我会在这里使用一个简单的字符串比较,据我所知,你想要做的事情没有内置函数(除非你想诉诸eval...你不这样做)。
var myBool = myString == "true";
【讨论】:
我想回答这个问题以改进接受的答案。
为了提高性能,并且在表单输入可能传递诸如“真”或“假”之类的值的实际情况下,此方法将产生最佳结果。
function stringToBool(val) {
return (val + '').toLowerCase() === 'true';
}
JSPerf
【讨论】:
你也可以使用 JSON.parse() 函数
JSON.parse("true") 返回真(布尔值)
JSON.parse("false") 返回 false(布尔值)
【讨论】:
undefined 的属性,则会导致 SyntaxError: Unexpected token u in JSON at position 0。请务必先检查该值是否可以解析。
typeof JSON.parse("10") === 'number'
其实你没有理解布尔方法的意思。如果变量不为null或为空,它总是返回true。
var variable = some value;
Boolean(variable);
如果我的变量有一些值,那么它将
return true
别的
return false
你不能像你想的那样使用布尔值。
【讨论】:
在 javascript 中将字符串转换为布尔值。例如
var bool= "true";
console.log(bool==true) //false
var bool_con = JSON.parse(bool);
console.log(bool_con==true) //true
【讨论】:
我仍然对人们盲目地投票支持不起作用的解决方案感到惊讶,例如:
var myBool = myString == "true";
以上内容太BUGGY!!!
不相信?只需尝试 myString = true (我的意思是布尔值 true)。现在评价如何?欧普斯:假的!
替代方案
var myString=X; // X={true|false|"true"|"false"|"whatever"}
myString=String(myString)=='true';
console.log(myString); // plug any value into X and check me!
总是会正确评估!
【讨论】:
取决于您在字符串中看到的错误。
空字符串,假字,0,应该都是假的或者只有空假的或者只有字假的。
您可能需要构建自己的方法来测试字符串并返回 true 或 false 以 100 % 确定它满足您的需求。
【讨论】:
我相信下面的代码可以完成这项工作。
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' 转换为字符串,因此如果它已经是布尔值,函数将不会返回无效结果。
(foo + "") == 'true'
仅当 'foo' 等于 'true' 或 true(字符串或布尔值)时,此比较才会返回 true。请注意,它区分大小写,因此“True”或任何其他变体都会导致错误。
(foo + "") == 'true' || (foo + "") == 'false'
同样,只有当变量 'foo' 等于 'true'、true、'false' 或 false 时,上面的句子才会产生 true。因此,像“test”这样的任何其他值都将返回 false,然后它不会运行“if”语句中的代码。这样可以确保只考虑布尔值(字符串或非字符串)。
在第 3 行中,'foo' 的值最终被“转换”为布尔值。
【讨论】:
这些行给出以下输出:
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') 这样的函数,它在 C# 中以布尔类型返回 true。 所以解决方法是
var setActive = 'true';
setActive = setActive == "true";
if(setActive)
// statements
else
// statements.
【讨论】:
请参阅此问题以供参考:
How can I convert a string to boolean in JavaScript?
有几种方法:
// Watch case sensitivity!
var boolVal = (string == "true");
或
var boolVal = Boolean("false");
或
String.prototype.bool = function() {
return (/^true$/i).test(this);
};
alert("true".bool());
【讨论】:
Boolean("false") 实际上是true
你可以试试这个:
var myBoolean = Boolean.parse(boolString);
【讨论】:
Boolean.parse() 被广泛使用,但它肯定在当前版本的 Chrome 中(我使用的是 v21)并且它可以按预期工作。