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

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

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

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

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


当前回答

我认为它可以用一个带有使用箭头功能的1行代码完成

const convertStringToBoolean = (value) => value ? String(value).toLowerCase() === 'true' : false;

你们可以使用以下代码段运行和测试各种情况

const convertStringToBoolean=(value)=>value?字符串(值).toLowerCase()==“true”:false;console.log(convertStringToBoolean(“a”));console.log(convertStringToBoolean(null));console.log(convertStringToBoolean(未定义));console.log(convertStringToBoolean(“undefined”));console.log(convertStringToBoolean(true));console.log(convertStringToBoolean(false));console.log(convertStringToBoolean(0));console.log(convertStringToBoolean(1));//唯一不起作用的情况

其他回答

警告

这个高度支持的传统答案在技术上是正确的,但仅适用于非常特定的场景,当字符串值完全为“true”或“false”时。

传递到下面这些函数的无效json字符串将引发异常。


原答覆:

怎么样

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

或使用jQuery

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

可以按如下方式使用JSON.parse:

var trueOrFalse=“真”;result=JSON.parse(trueOrFalse.toLowerCase());if(结果==真)警报(“这是真的”);其他的警报(“这是错误的”);

在这种情况下,toLowerCase很重要

if (String(a) == "true"){
  //true block
} else {
  //false block
}

使用if语句:

函数parseBool(str){if(str.toLowerCase()=='true'){var val=真;}否则如果(str.toLowerCase()=='false'){var val=假;}其他{//如果不是true或false,则返回undefined//var val=未定义;}返回值;}console.log(parseBool(“”),parseBoo(“”的类型);console.log(parseBool('TrUe'),parseBool'('TrUe')的类型);console.log(parseBool('false'),parseBool'('false')类型);

布尔(value)的简写是!!价值,这是因为!将值转换为与当前值相反的值,然后!将其再次反转为原始形式。