开发者

Convert string to Boolean in javascript [duplicate]

This question already has answers here: How can I convert a string to boolean in JavaScript? (103 answers) Closed 5 years ago.

How to convert a string to Boolean ?

I tried using the constructor Boolean("false"), but 开发者_如何转开发it's always true.


I would use a simple string comparison here, as far as I know there is no built in function for what you want to do (unless you want to resort to eval... which you don't).

var myBool = myString == "true";


I would like to answer this to improve upon the accepted answer.

To improve performance, and in real world cases where form inputs might be passing values like 'true', or 'false', this method will produce the best results.

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

JSPerf

Convert string to Boolean in javascript [duplicate]


you can also use JSON.parse() function

JSON.parse("true") returns true (Boolean)

JSON.parse("false") return false (Boolean)


Actually you don't get the meaning of Boolean method.It always return true if the variable is not null or empty.

var variable = some value; Boolean(variable);

If my variable have some value then it will return true else return false You can't use Boolean as you think.


trick string to boolean conversion in javascript. e.g.

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

var bool_con = JSON.parse(bool);

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


I am still amazed how people vote blindly for solutions that won't work, like:

var myBool = myString == "true";

The above is so BUGGY!!!

Not convinced? Just try myString = true (I mean the boolean true). What is the evaluation now? Opps: false!

Alternative

var myString=X; // X={true|false|"true"|"false"|"whatever"}
myString=String(myString)=='true';
console.log(myString); // plug any value into X and check me!

will always evaluate right!


Depends on what you see as false in a string.

Empty string, the word false, 0, should all those be false or is only empty false or only the word false.

You probably need to buid your own method to test the string and return true or false to be 100 % sure that it does what you need.


I believe the following code will do the work.

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;
}

Explaining the code:

foo + ""

converts the variable 'foo' to a string so if it is already boolean the function will not return an invalid result.

(foo + "") == 'true'

This comparison will return true only if 'foo' is equal to 'true' or true (string or boolean). Note that it is case-sensitive so 'True' or any other variation will result in false.

(foo + "") == 'true' || (foo + "") == 'false'

Similarly, the sentence above will result in true only if the variable 'foo' is equal to 'true', true, 'false' or false. So any other value like 'test' will return false and then it will not run the code inside the 'if' statement. This makes sure that only boolean values (string or not) will be considered.

In the 3rd line, the value of 'foo' is finally "converted" to boolean.


These lines give the following output:

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


Unfortunately, I didn't find function something like Boolean.ParseBool('true') which returns true as Boolean type like in C#. So workaround is

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

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


javascript:var string="false";alert(Boolean(string)?'FAIL':'WIN')

will not work because any non-empty string is true

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

works because compared with string represenation


See this question for reference:

How can I convert a string to boolean in JavaScript?

There are a few ways:

// Watch case sensitivity!
var boolVal = (string == "true");

or

var boolVal = Boolean("false");

or

String.prototype.bool = function() {
    return (/^true$/i).test(this);
};
alert("true".bool());


You can try this:

var myBoolean = Boolean.parse(boolString);

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜