在javascript中将字符串转换为布尔值[重复]

Posted

技术标签:

【中文标题】在javascript中将字符串转换为布尔值[重复]【英文标题】:Convert string to Boolean in javascript [duplicate] 【发布时间】:2011-05-19 16:12:52 【问题描述】:

如何将字符串转换为布尔值?

我尝试使用构造函数Boolean("false"),但总是如此。

【问题讨论】:

看看这个,之前的类似问题的答案Other stack overflow question 【参考方案1】:

我会在这里使用一个简单的字符串比较,据我所知,你想要做的事情没有内置函数(除非你想诉诸eval...你不这样做)。

var myBool = myString == "true";

【讨论】:

2014 年读到这篇文章,仍然对这个解决方案的简单性感到惊讶。 也许 var myBool = myString.toLowerCase() == "true" 会更好 这行不通!只需初始化 myString = true;你会看到 myBool 返回 false!!! @EugenMihailescu true 不是字符串值,这是问题所要问的。 @EugenMihailescu 对。我只是指出,在某种程度上,你的评论离题了。问题和答案是关于将字符串值转换为布尔值,而在您的情况下不需要转换。但是,如果您想同时支持这两个答案,则可以轻松修改为: var myBool = myString === true || myString === "true";【参考方案2】:

我想回答这个问题以改进接受的答案。

为了提高性能,并且在表单输入可能传递诸如“真”或“假”之类的值的实际情况下,此方法将产生最佳结果。

function stringToBool(val) 
    return (val + '').toLowerCase() === 'true';

JSPerf

【讨论】:

为什么投反对票?【参考方案3】:

你也可以使用 JSON.parse() 函数

JSON.parse("true") 返回真(布尔值)

JSON.parse("false") 返回 false(布尔值)

【讨论】:

如果有人将此作为解决方案实施,请记住,如果您引用 undefined 的属性,则会导致 SyntaxError: Unexpected token u in JSON at position 0。请务必先检查该值是否可以解析。 它还可能将字符串误解为数字。 typeof JSON.parse("10") === 'number'【参考方案4】:

其实你没有理解布尔方法的意思。如果变量不为null或为空,它总是返回true。

var variable = some value; Boolean(variable);

如果我的变量有一些值,那么它将 return true 别的 return false 你不能像你想的那样使用布尔值。

【讨论】:

布尔(变量);对我有用吗:)【参考方案5】:

javascript 中将字符串转换为布尔值。例如

var bool= "true";
console.log(bool==true) //false

var bool_con = JSON.parse(bool);

console.log(bool_con==true) //true

【讨论】:

【参考方案6】:

我仍然对人们盲目地投票支持不起作用的解决方案感到惊讶,例如:

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!

总是会正确评估!

【讨论】:

执行 myString = true 与 OP 要求的不同,他要求将字符串转换为布尔值... 没关系!一个好的程序员总是会提供尽可能多的代码,同时保持代码尽可能简单。不要告诉我“你的评论离题了”,因为归根结底,读者想要的是最好的。这不是选美比赛,也不是对错比赛。这是一个程序员分享最佳解决方案的论坛,让每个人都赢。否则这一切都是毫无意义的/无用的。 令人难以置信的是,您忽略了解决方案中的许多潜在缺陷。 X 可以是 5 或“5”,或者像您自己建议的“随便”。所有这些都将评估为 false,这显然是不正确的。作为一个总是试图远远超出要求的优秀程序员,你应该知道最好不要在这个论坛上发布这样的错误代码。 @Xatian:我不太明白你所说的“很多潜在的陷阱”是什么意思。您的命名示例(X 可能是 5 或“5”)被评估为布尔值 false,因为 5 或“5”不是有效的布尔常量,它是一个整数。因此,建议的替代方案有效。欢迎任何可以改进建议替代方案的建议/反例。【参考方案7】:

取决于您在字符串中看到的错误。

空字符串,假字,0,应该都是假的或者只有空假的或者只有字假的。

您可能需要构建自己的方法来测试字符串并返回 true 或 false 以 100 % 确定它满足您的需求。

【讨论】:

【参考方案8】:

我相信下面的代码可以完成这项工作。

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' 的值最终被“转换”为布尔值。

【讨论】:

【参考方案9】:

这些行给出以下输出:

Boolean(1).toString(); // true
Boolean(0).toString(); // false

【讨论】:

【参考方案10】:
javascript:var string="false";alert(Boolean(string)?'FAIL':'WIN')

将不起作用,因为任何非空字符串都是true

javascript:var string="false";alert(string!=false.toString()?'FAIL':'WIN')

之所以有效,是因为与字符串表示相比

【讨论】:

【参考方案11】:

不幸的是,我没有找到像 Boolean.ParseBool('true') 这样的函数,它在 C# 中以布尔类型返回 true。 所以解决方法是

var setActive = 'true'; 
setActive = setActive == "true";

if(setActive)
// statements
else
// statements.

【讨论】:

【参考方案12】:

请参阅此问题以供参考:

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【参考方案13】:

你可以试试这个:

var myBoolean = Boolean.parse(boolString);

【讨论】:

TypeError: Object function Boolean() [native code] has no method 'parse' 它看起来不像Boolean.parse() 被广泛使用,但它肯定在当前版本的 Chrome 中(我使用的是 v21)并且它可以按预期工作。

以上是关于在javascript中将字符串转换为布尔值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将字符串转换为布尔值[重复]

如何在 laravel 迁移中将字符串转换为布尔值?

TypeScript:将布尔值转换为字符串值

如何在 Postgres 中将布尔数组转换为单个布尔值或单个字符串

如何在 Go 中将布尔值转换为字符串?

在具有混合数据类型的数据框中将所有出现的真/假转换为 1/0 [重复]