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

新手上路,请多包涵

我可以将表示布尔值的字符串(例如,’true’、’false’)转换为 JavaScript 中的内在类型吗?

我在 HTML 中有一个隐藏的表单,它会根据用户在列表中的选择进行更新。此表单包含一些表示布尔值的字段,并使用固有的布尔值动态填充。但是,一旦将此值放入隐藏的输入字段中,它就会变成一个字符串。

一旦将字段转换为字符串,我能找到确定字段布尔值的唯一方法是依赖于其字符串表示的文字值。

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

有没有更好的方法来实现这一点?

原文由 Kevin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

做:

 var isTrueSet = (myValue === 'true');

使用恒等运算符 ( === ),当比较变量具有不同类型时,它不会进行任何隐式类型转换。

如果字符串为“true”,则将 isTrueSet 设置为布尔值 true ;如果字符串为“false”或根本未设置,则设置为布尔值 false


不:

您可能 应该谨慎使用这两种方法 来满足您的特定需求:

 var myBool = Boolean("false"); // == true

 var myBool = !!"false"; // == true

任何不是空字符串的字符串都将通过使用它们来评估为 true 。尽管它们是我能想到的关于布尔转换的最简洁的方法,但我认为它们不是您想要的。

原文由 guinaps 发布,翻译遵循 CC BY-SA 4.0 许可协议

警告

当您的字符串值完全是 "true""false" 时,这个高度赞成的遗留答案在技术上是正确的,但只涵盖了一个非常具体的场景。

传递给下面这些函数的无效 json 字符串 将抛出异常


原答案:

怎么样?

 JSON.parse("True".toLowerCase());

或者使用 jQuery

 $.parseJSON("TRUE".toLowerCase());

原文由 Luke 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题