是否有一个函数或语句我可以用来检查我可以从php,或html获得的真/假,或者某些来源提供javascript不理解为boolean的真值或假值。所以我可以检查字符串true或布尔值true或1值(php返回true,我认为..)
所以喜欢:
var trueVal = true;
if ( trueVal == true || trueVal === true || trueVal == "true" || trueVal == "TRUE" || trueVal == "1" || trueVal == 1 ) {
//
}
这有意义吗?有更简单的方法吗?
谢谢!
答案 0 :(得分:1)
如果你能确保true
正确传递,那么它可能会容易得多:
if( trueVal)
唯一一次出现问题的方法是,如果你有字符串"false"
或"0"
,但可以修复:
if( trueVal && !trueVal.toString().match(/^(false|0)$/i))
答案 1 :(得分:1)
如果您要查找的是某个形式的单词“true”或非零整数,请将其转换为字符串,然后检查它是否看起来像单词true或非零整数。
function isPHPTrue(x) {
x = String(x);
if (/^(true|[+-]?0*[1-9][0-9]*)$/i.test(x)) { return true; }
if (/^(false|[+-]?0+)$/i.test(x)) { return false; }
throw new Error('Not obviously true or false: ' + x);
}
答案 2 :(得分:0)
据我所知,没有"一般"这样做的方式,就像一种元布尔检查函数,但你可以减少比较次数:
trueVal="1";
if(trueVal*1==1||trueVal.toLowerCase()=="true"){
//do stuff
}
trueVal*1
需要"1"
,1
和true
; trueVal.toLowerCase()=="true"
需要"true"
,"tRuE"
以及所有大写/小写变体。
希望这有助于:)
答案 3 :(得分:0)
function convertToBoolean(input) {
return input.toLowerCase() == "true" || input == 1;
}
// And to test this works:
console.log(convertToBoolean("TRUE")); //true, boolean
console.log(convertToBoolean("true")); //true, boolean
console.log(convertToBoolean("false")); //false, boolean
console.log(convertToBoolean("1")); //true, boolean
console.log(convertToBoolean(0)); //false, boolean
// and of course...
console.log(convertToBoolean(true)); //true, boolean