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

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

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

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

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


当前回答

我发现,对布尔值使用“1”和空值“”比使用“true”或“false”字符串值更有效。。。特别是对于html表单,因为Dom元素中的未初始化/空值将始终求值为false,而其中的任何值都求值为true。

例如:

<input type='button' onclick='this.value = tog(this.value);' />

<script type="text/javascript">

    function tog(off) {
        if(off) {
            alert('true, toggle to false');
            return '';
        } else {
            alert('false, toggle to true');
            return '1';
        }
    }   
</script>

似乎是一条更容易的路,到目前为止,这条路一直很稳定/容易。。。也许有人能找到打破这种局面的方法?

其他回答

警告

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

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


原答覆:

怎么样

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

或使用jQuery

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

以下内容就足够了

String.prototype.boolean = function() {
    return "true" == this; 
};

"true".boolean() // returns true "false".boolean() // returns false

从字符串或数字中获取布尔值有一个很好的解决方案:

var boolValue = Boolean(Number('0'));

var boolValue = Boolean(Number('1'));

第一个将返回false,第二个将返回true。

这是我最近遇到的最简单的布尔转换方法。考虑添加它。

JSON.parse('true');

let trueRespons=JSON.parse('true');let falseResponse=JSON.parse('false');console.log(trueResponse);console.log(错误响应);

我认为这是非常普遍的:

if(字符串(a).toLowerCase()==“true”)。。。

它说:

String(true) == "true"     //returns true
String(false) == "true"    //returns false
String("true") == "true"   //returns true
String("false") == "true"  //returns false